transacciones en SQL

negocios

En primer lugar, lo que es una transacción

1.1 El concepto y requisitos de los asuntos

  1. Transacción (transacción) son una serie de operaciones como una sola unidad lógica de trabajo realizado
  2. sistemas operativos múltiples en su conjunto a presentar, ya sea toda ejecutan o no
  3. Una transacción es una unidad lógica de trabajo indivisible

1.2 Características de la transacción (ACID)

  1. 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
  2. La consistencia (Consistencia): Cuando se termina la transacción, los datos deben estar en un estado coherente
  3. 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
  4. 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

  1. Es evidente que se especifique transacción con el inicio inicio TRANSACCIÓN
  2. El tipo más común de transacción

2,2 transacción implícita

  1. Normalmente conjunto IMPLICIT_TRANSACTIONS SET en el modo de transacción implícita declaración está configurado para abrir
  2. Seguido de instrucción T-SQL se iniciará automáticamente una nueva transacción
  3. 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

  1. El modo predeterminado para SQL Server
  2. 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

  1. iniciar la transacción

    BEGIN TRAN[SACTION]
    
  2. Confirmar la transacción

    COMMIT TRANSACTION
    
  3. 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

  1. El uso de variables globales @@ ERROR
  2. @@ error sólo determinar si la corriente ejecutar una sentencia T-SQL es incorrecta
  3. 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'
Publicados 121 artículos originales · ganado elogios 240 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/chonbi/article/details/104837204
Recomendado
Clasificación