我正在查看一些代码(我没有写它!)来测试我们的代码在尝试删除存在依赖项的表行时捕获了两个错误条件.
代码最初在消息中查找特定文本而不是使用错误号.
为了提供多语言支持,最好根据错误号而不是错误消息捕获异常.
在测试中,代码正在寻找两组文本,我似乎无法确定区别是什么,所以只是检查错误号547是不舒服的.
假设两个错误消息的错误号都是547是否安全?干杯科林
547是用于任何约束违规的错误代码,而不仅仅是外键,例如:
create table T (
ID int not null,
constraint CK_Not1 CHECK (ID != 1)
)
go
insert into T (ID) values (2)
go
update T set ID = 1
(1 row(s) affected)
Msg 547, Level 16, State 0, Line 1
The UPDATE statement conflicted with the CHECK constraint "CK_Not1". The conflict occurred in database "Flange", table "dbo.T", column 'ID'.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
话虽这么说,我想不出任何其他类型的约束,除了外键,可能会被(帽子小贴士@onedaywhen)DELETE声明侵犯.
如果您查看sys.messages,您将看到547必须是违反约束:
select text from sys.messages where message_id=547 and language_id=1033
Run Code Online (Sandbox Code Playgroud)
%ls语句与%ls约束"%.*ls"冲突.冲突发生在数据库"%.*ls",表"%.*ls"%ls%.*ls%ls中.
| 归档时间: |
|
| 查看次数: |
43872 次 |
| 最近记录: |