Si je veux sélectionner tous les enregistrements dans une table qui ne sont pas encore traitées, puis mettre à jour ces dossiers afin de tenir compte qu'ils ont été traités, je voudrais faire ce qui suit:transactions T-SQL et le verrouillage de table
SELECT * FROM [dbo].[MyTable] WHERE [flag] IS NULL;
UPDATE [dbo].[MyTable] SET [flag] = 1 WHERE [flag] IS NULL;
Comment m'assurer que UPDATE ne fonctionne que sur les enregistrements que je viens de sélectionner, c'est-à-dire empêcher la mise à jour des enregistrements ajoutés avec [flag] = NULL après mon SELECT mais avant mon UPDATE par un autre processus? Puis-je envelopper ces deux déclarations dans une transaction? Dois-je mettre un verrou sur la table?
Quelle est la première version de SQL Server qui prend en charge la clause 'OUTPUT'? –
SQL Server 2005, ce qui devrait être une hypothèse juste à faire dans (presque) 2010 ... – gbn
..et donné OP utilise SSIS aussi, basé sur d'autres questions. – gbn