SQL Server 2008: J'ai ici une situation dans laquelle je souhaite lire dans une table et écrire une ligne dans certaines conditions. Le problème est que je ne veux pas qu'une autre demande arrive exactement au même moment et fasse la même chose. Je vais essayer d'expliquer ici:SQL Query Exclusif Lecture/écriture au tableau
Nom de la table: RequestQueue
Columns:
RequestID, StartDate, EndDate, RequestResult
Sample Data
1, 12/4/10 1:00pm, 12/4/10 1:02pm, Success
2, 12/4/10 1:04pm, 12/4/10 1:05pm, Success
3, 12/4/10 1:00pm, NULL, NULL
Lorsqu'une page se charge dans mon application, je le veux à regarder ce tableau et s'il y a une demande toujours en attente comme (ID # 3) il ne fera rien. Sinon, s'il n'y a aucune demande en attente, elle crée une nouvelle ligne avec l'ID et StartDate remplis.
Le problème est que nous pouvons nous retrouver dans une situation où la page est chargée deux fois presque exactement au même moment. S'il arrive que les deux lisent de la table avant que la nouvelle ligne ne soit produite, alors je pourrais avoir deux nouvelles lignes là-dedans. Je veux avoir une sorte de requête qui lit à partir de la table et s'il n'y a aucune demande en attente, insère la nouvelle ligne avec le StartDate rempli. Je veux que cette requête s'exécute complètement avant qu'une autre page puisse même lire de cette table Je ne reçois pas l'effet "double rangée".
je pourrais avoir besoin « verrouillage » ou quelque chose, je googlé cela, mais n'ont pas trouvé quelque chose pour ma situation exacte. Je suis sûr que cela pourrait être une procédure stockée simple J'ai juste besoin d'une poussée dans la bonne direction ici.
Merci,
Robert
Que SGBDR utilisez-vous? MySQL, SQL Server, etc? – JNK
Quels SGBDR et version? Voulez-vous également bloquer ** toutes ** les lectures simultanées de la table ou y a-t-il des lectures qui ne sont pas liées au processus d'insertion qui serait mieux autorisé? –
Oh désolé, SQL Server 2008 – Robert