我正在使用 SQL Server 2005 数据库,并且我有一个 If 语句,它针对同一数据集以两种不同的方式运行,具体取决于要在 begin...end 块中采取的操作。
首先,如果我只想打印到控制台,下面的代码不会像预期的那样打印任何内容:
if (not exists(select null from tblControls where Name = 'SOME_CONTROL_NAME'))
begin
print 'control not found'
end
而此代码按预期打印“找到控制”:
if (exists(select null from tblControls where Name = 'SOME_CONTROL_NAME'))
begin
print 'control found'
end
但是,如果我将代码更改为:
if (not exists(select null from tblControls where Name = 'SOME_CONTROL_NAME'))
begin
insert into tblControls values (632, 'NEW_CONTROL_NAME', 'New Control', 1, 1, NULL, 1, 'DataControls.CheckBox', NULL, NULL, 1)
end
即使 tblControls 中存在匹配的记录,插入语句也总是会触发。T-SQL 2005 中的插入语句有什么特别之处可能导致这种行为,还是我遗漏了一些明显的东西?我会理解代码的逻辑是否错误,但是当我使用 print 语句进行测试时,它会按预期工作。
编辑:它生成“插入错误”消息。
非常感谢您对这个令人沮丧的问题的任何帮助。