某些操作失败时会产生多个异常。考虑以下:
use tempdb
go
create table x (i int, s char(32))
go
create table y (a int, xi int)
go
alter table y add constraint y_xi foreign key (xi) references x(i)
go
生成:
消息 1776,级别 16,状态 0,第 1 行被引用的表“x”中没有与外键“y_xi”中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 0,行 1 无法创建约束。请参阅以前的错误。
如果要围绕此操作包装 try/catch,则只能选择最后一个异常,而第一个实际上更有趣:
begin try
alter table y add constraint y_xi foreign key (xi) references x(i)
end try
begin catch
print error_number()
end catch
生成 1750 - 这告诉我无法创建约束,但不知道为什么。1776 会更有用,但我不知道如何拿起它。
任何人的想法?
TIA-e!