在逻辑语句中验证

时间:2013-05-17 13:30:05

标签: sql-server tsql

我在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真的不再存在了,但是我的声明的第一部分应该阻止这个验证,或者我错了吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我认为这是因为编译了查询,并且在此过程中服务器检查语法。它发送此错误,因为colum不存在,在此过程中无法映射。