negocios
En primer lugar, lo que es una transacción
1.1 El concepto y requisitos de los asuntos
- Transacción (transacción) son una serie de operaciones como una sola unidad lógica de trabajo realizado
- sistemas operativos múltiples en su conjunto a presentar, ya sea toda ejecutan o no
- Una transacción es una unidad lógica de trabajo indivisible
1.2 Características de la transacción (ACID)
- La atomicidad (atomicidad): Una transacción es una operación completa, el funcionamiento de las diversas etapas de la transacción son inseparables, se ejecuta ya sea o no ejecutado
- La consistencia (Consistencia): Cuando se termina la transacción, los datos deben estar en un estado coherente
- Aislamiento (aislamiento): aislados unos de otros entre transacciones simultáneas, de forma independiente. No debería ser dependientes o afectada de ninguna manera otros asuntos
- Persistente (Durabilidad): Después de finalizada la transacción, modificar su base de datos se almacenan de forma permanente
En segundo lugar, la clasificación de la transacción
2.1 muestra los asuntos
- Es evidente que se especifique transacción con el inicio inicio TRANSACCIÓN
- El tipo más común de transacción
2,2 transacción implícita
- Normalmente conjunto IMPLICIT_TRANSACTIONS SET en el modo de transacción implícita declaración está configurado para abrir
- Seguido de instrucción T-SQL se iniciará automáticamente una nueva transacción
- Después de una transacción se confirma o se revierte, la siguiente instrucción T-SQL, a su vez, se inicia una nueva transacción
2,3 commit automáticamente la transacción
- El modo predeterminado para SQL Server
- Cada instrucción T-SQL individuo a ser interpretado como una transacción
En tercer lugar, crear una transacción
--银行转账业务
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
gramática
-
iniciar la transacción
BEGIN TRAN[SACTION]
-
Confirmar la transacción
COMMIT TRANSACTION
-
Deshacer la transacción (retracción de la transacción)
ROLLBACK TRANSACTION
Una vez que la transacción se confirma o se revierte, la transacción ha terminado
La operación clave en la pregunta 3.1
De los asuntos INSERT, UPDATE, DELETE es seguimiento en tiempo real
3.2 método para determinar si un error de ejecución de la sentencia
- El uso de variables globales @@ ERROR
- @@ error sólo determinar si la corriente ejecutar una sentencia T-SQL es incorrecta
- Con el fin de determinar si la transacción en todos los T-SQL es incorrecta, puede ser el error acumulativo
En cuarto lugar, los asuntos de uso
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'