失败时的某些操作会产生多个异常。请考虑以下事项:
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
生成:
Msg 1776,Level 16,State 0,Line 1没有小学或候选人 引用表'x'中与引用列匹配的键 在外键'y_xi'中列出。
Msg 1750,Level 16,State 0,Line 1 无法创建约束。查看以前的错误。
是一个围绕此操作包装try / catch的人,只能获取异常的 last ,而第一个实际上更感兴趣:
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!
答案 0 :(得分:0)
所以答案是无法做到的。显然,SQL Server 2012按照本文的某种方式解决了这个问题:
感谢@ user3973227指出这一点!