我有一个存储过程,它更新一个表,非常标准的insert查询,而该表有一个约束,以确保没有重复的数据可以进入,当过程被重复的数据执行时,它是错误的,但是proc的最后一步执行一个电子邮件存储的proc。即使插入失败,电子邮件也会被发送?我以为这个过程会因为插入错误而停止?
发布于 2013-10-11 11:29:22
不,这取决于错误的严重程度。如果严重性小于11,则默认情况下SQL server将继续运行。
我发现这篇文章在解释这一点方面做得不错:http://blog.sqlauthority.com/2012/04/26/sql-server-introduction-to-sql-error-actions-a-primer/
如果我是您,我将确保存储过程在事务中使用try/catch块执行所有操作。
例如
BEGIN TRAN
BEGIN TRY
-- Do insert
-- send email
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
END CATCH
IF @@TRANCOUNT > 0 COMMIT TRANhttps://stackoverflow.com/questions/19316507
复制相似问题