1

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

提前致谢!

4

1 回答 1

2

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

于 2013-05-17T13:36:34.220 回答