我在T-SQL数据库的更新脚本中进行了以下逻辑测试:
IF ((COL_LENGTH('dbo.Trackers','DeviceId') IS NOT NULL) AND (COL_LENGTH('dbo.Devices','UserId') IS NOT NULL))
UPDATE [dbo].[Devices]
SET [UserId] = (SELECT TOP 1 t.UserId FROM Trackers t WHERE t.DeviceId = [dbo].[Devices].DeviceId);
GO
...这给了我这个错误:
列名称无效' DeviceId'。
好的,列Trackers.DeviceId真的不再存在了,但是我的声明的第一部分应该阻止这个验证,或者我错了吗?
提前致谢!
答案 0 :(得分:2)
我认为这是因为编译了查询,并且在此过程中服务器检查语法。它发送此错误,因为colum不存在,在此过程中无法映射。