以下SQLServer代码:
BEGIN TRY
BEGIN TRANSACTION TRAN
UPDATE Authors
SET Phone = '415 354-9866'
WHERE au_id = '724-80-9391';
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
在authors表中有一个触发器。更新前的均值触发器将新记录插入临时表。查询:
答案 0 :(得分:1)
事务的概念是:如果执行回滚,则数据库将恢复为与事务实际启动时相同的状态。
遵循此概念,此事务中的任何触发器所做的所有更改也都会回滚。
实际上,即使没有显式事务,同样应该适用于单个语句(如在您的示例中) - 此单个语句然后创建隐式事务,并且触发器执行是此事务的一部分。如果有任何失败,隐式事务也会回滚,包括触发器的更改,使数据库保持原样。
这是数据库确保数据一致性的唯一方法!