在SQL Server中,我们在存储过程中使用SET XACT_ABORT ON
。所以,在Postgres中是什么是替代SET XACT_ABORT ON
语句。
SET XACT_ABORT:
当SET XACT_ABORT
为ON时,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。
当SET XACT_ABORT
为OFF时,在某些情况下,只回滚引发错误的Transact-SQL语句,事务继续处理。根据错误的严重性,即使SET XACT_ABORT为OFF,也可能回滚整个事务。OFF是T-SQL语句中的默认设置,而ON是触发器中的默认设置。
1条答案
按热度按时间gg58donl1#
Microsoft says:
指定当Transact-SQL语句引发运行时错误时,SQLServer是否自动回滚当前事务。
这是PostgreSQL中的默认行为,也是唯一的行为(除非你使用了保存点),所以你不需要做什么。一个区别可能是,即使在错误之后,PostgreSQL也不会自动终止事务块,所以你仍然需要发出
ROLLBACK
。这是为了使错误后的剩余语句不会在它们自己的事务中执行,而是与错误语句沿着被忽略。