Bonjour,
Dans une procédure stockée, j'exécute (entre autre) les instructions suivantes :
Instruction 1 :
Instruction 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 IF EXISTS (select 'x' from sysobjects where name='CONTRAINTE1') BEGIN ALTER TABLE MA_TABLE DROP CONSTRAINT CONTRAINTE1 END
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT MA_TABLE (champ1, champ2) SELECT (champ1, champ2) FROM MA_TABLE_TEMP
L'insert de l'instruction 2 ne peut se faire que si la contrainte CONTRAINTE1 a été supprimée par l'instruction 1.
A l'exécution de la procédure stockée, j'ai une erreur qui me dit que l'insert ne peut pas se faire en raison de la contrainte. Déjà, c'est bizarre car elle est censée avoir été supprimée.
Ce qui est encore plus bizarre, c'est qu'ensuite, si j'exécute à part mon instruction 2 dans une fenêtre SQL, l'insert s'exécute normalement (ce qui prouve que la contrainte a bien été supprimée dans la procédure stockée)
Je me demande alors si le code ne s'exécute pas trop vite et que l'instruction 2 démarre avant que l'instruction 1 ne soit terminée.
Mais je trouverais ça quand même bizarre.
Pouvez-vous me dire ce que vous en pensez ?
Merci
Partager