2009-09-29 5 views
1

Après l'insertion dans masterTable, elle renvoie un ID. Avec cet ID je veux entrer plus d'une rangée dans une table de transaction.insertion de valeurs dans le maître et la table de transactions en même temps

J'utilise deux procédures distinctes. Le problème est, après l'insertion de l'enregistrement dans le maître, et lors de l'insertion dans la table de transaction, si une interruption se produit, je veux abandonner l'insertion correspondante de la table principale. Puis-je le faire en utilisant une procédure stockée?

S'il vous plaît aider ..

Répondre

2

Do it dans une transaction:

BEGIN TRANSACTION 
EXECUTE prc_insert_master @value 
EXECUTE prc_insert_child @value, @result OUTPUT 
IF @result = -1 THEN 
BEGIN 
    ROLLBACK 
END 
ELSE 
    COMMIT 
0

à regrouper plusieurs modifications de données de base de données des commandes dans un ensemble de travail "tout ou rien", utilisez une transaction.

Toutes les modifications de données suivant un BEGIN TRANSACTION peuvent être complètement inversées, comme si elles ne s'étaient jamais produites, lorsque vous émettez un ROLLBACK. Ils peuvent tous être rendus permanents en émettant un COMMIT.

Vous pouvez utiliser le langage d'application ou TSQL, au cours d'une procédure, pour exécuter les commandes BEGIN TRANSACTION, COMMIT et ROLLBACK en fonction des valeurs renvoyées, du recouvrement des erreurs ou de toute autre logique que vous souhaitez.

Questions connexes