affaires
Tout d'abord, ce qui est une transaction
1.1 Les affaires concept et exigences
- Transaction (transactions) sont une série d'opérations comme une seule unité logique de travail effectué
- Plusieurs systèmes d'exploitation dans son ensemble à soumettre, soit toutes exécutées ou non
- Une transaction est une unité logique de travail indivisible de
1.2 Caractéristiques transaction (ACID)
- Atomicité (atomicité): Une transaction est une opération complète, le fonctionnement des différentes étapes de la transaction sont inséparables, il est soit exécuté ou non exécuté
- La cohérence (cohérence): Une fois la transaction terminée, les données doivent être dans un état cohérent
- Isolation (Isolement): isolé de l'autre entre les opérations simultanées, de manière indépendante. Il ne devrait pas dépendre ou affectées de quelque manière que d'autres questions
- Persistante (durabilité): Après l'opération est terminée, modifier sa base de données sont stockées de façon permanente
En second lieu, la classification de la transaction
2.1 montre affaires
- Il est clair que la transaction spécifiée avec le début BEGIN TRANSACTION
- Le plus type de transaction commune
2.2 transaction implicite
- En règle générale IMPLICIT_TRANSACTIONS ensemble SET instruction On mode de transaction implicite est prête à ouvrir
- Suivi par instruction T-SQL démarre automatiquement une nouvelle transaction
- Après une transaction est validée ou annulée, l'instruction suivante T-SQL démarre à son tour une nouvelle transaction
2.3 validera automatiquement la transaction
- Le mode par défaut pour SQL Server
- Chaque instruction T-SQL individuel à être interprété comme une transaction
Troisièmement, créer une transaction
--银行转账业务
DECLARE @ZHA INT=11004,@ZHB INT=11005,@Money INT=10,@errorSum INT=0
BEGIN TRANSACTION
BEGIN
UPDATE [User] SET CurrentMoney-=@Money WHERE ID=@ZHA
SET @errorSum+=@@ERROR --对错误进行累计
UPDATE [User] SET CurrentMoney+=@Money WHERE ID=@ZHB
SET @errorSum+=@@ERROR
IF(@errorSum>0)
BEGIN
PRINT '转账失败!'
ROLLBACK TRANSACTION ---事务回滚
END
ELSE
BEGIN
PRINT '转账成功!'
COMMIT TRANSACTION ----事务提交
END
END
grammaire
-
Début de la transaction
BEGIN TRAN[SACTION]
-
Valider la transaction
COMMIT TRANSACTION
-
Annuler la transaction (rétractation de transaction)
ROLLBACK TRANSACTION
Une fois que la transaction est validée ou annulée, la transaction est terminée
La clé de transaction en question 3.1
Des affaires INSERT, UPDATE, DELETE est suivi en temps réel
3,2 Procédé pour déterminer si une erreur d'exécution de l'instruction
- Utilisation de l'erreur des variables globales
- @@ ERROR ne déterminer si le courant exécuter une instruction T-SQL est erronée
- Afin de déterminer si la transaction dans toute instruction T-SQL est erronée, il peut être l'erreur cumulative
Quatrièmement, les affaires d'utilisation
CREATE PROC sp_BankZhuanZhang
@ZHA INT,
@ZHB INT,
@Money INT
AS
DECLARE @errorSum INT=0
BEGIN TRAN
BEGIN
UPDATE [User] SET CurrentMoney-=@Money WHERE ID=@ZHA
SET @errorSum+=@@ERROR
UPDATE [User] SET CurrentMoney+=@Money WHERE ID=@ZHB
SET @errorSum+=@@ERROR
IF(@errorSum>0)
BEGIN
PRINT '转账失败!'
ROLLBACK TRANSACTION ---事务回滚
END
ELSE
BEGIN
PRINT '转账成功!'
COMMIT TRANSACTION ----事务提交
END
END
EXEC sp_BankZhuanZhang '11004','11005','20'