【发布时间】:2016-01-21 12:38:23
【问题描述】:
问题应该很简单,但我不知道答案,也不知道为什么我的存储过程不工作。
CREATE PROCEDURE spTest_Delete
@ID int
AS
begin tran
declare @err int
declare @errMesage nvarchar(max)
set @errMesage = ''
set @err = 0
delete from Test
where ID = @ID
set @err = @@ERROR
set @errMesage = ERROR_MESSAGE()
if @err = 0
commit tran
else
begin
RAISERROR(N'Could not delete !Error nr: %d. Message: %s', 1, 16, @err, @errMesage)
rollback tran
end
此过程运行正常,但在 delete 语句上存在 FK 约束的情况下,它会遇到错误(这很好),我想捕获该错误。
消息 547,级别 16,状态 0,过程 spTest_Delete,第 12 行
DELETE 语句与 REFERENCE 约束冲突 “FK_TEstFK_Test”。数据库“Test”中发生冲突,表 “dbo.Test”,“ID”列。该语句已终止。无法删除!
错误编号:547。消息:(空)消息 50000,级别 1,状态 16
我的消息变量总是为 null,即使 delete 语句引发错误。
【问题讨论】:
标签: sql-server stored-procedures sql-server-2012