我使用查询生成器为多种方言生成一些 SQL。
以下查询给了我一个错误,我似乎无法弄清楚问题是什么:
UPDATE dbo.OBJECT SET LANGNAME = 'FooBar' WHERE dbo.OBJECT."OBJEC_ID" IN (69, 42, 1337)
第 1 行第 66 列的错误 #46010:“OBJEC_ID”附近的语法不正确。
“OBJEC_ID”用引号引起来,因为某些列是以某些方言中的现有关键字命名的,因此它应该保持这种状态。
我已经尝试引用和取消引用表说明符,删除它们。如果我删除 WHERE 子句,它“有效”,所以它肯定在那里。
编辑:我没有确切的 CREATE TABLE 命令,但这里是所有列定义的屏幕截图(需要粗体字段):
编辑 2:表上有触发器,但仅用于更新某些时间戳。“LANGNAME”肯定没有触发器。它也不是一个独特的领域。这是我所知道的关于表的其余部分:
使用括号代替:
UPDATE dbo.OBJECT
SET LANGNAME = 'FooBar'
WHERE dbo.OBJECT.[OBJEC_ID] IN (69, 42, 1337)
或者,如果您的列名确实包含引号,也请包括它们:
UPDATE dbo.OBJECT
SET LANGNAME = 'FooBar'
WHERE dbo.OBJECT.["OBJEC_ID"] IN (69, 42, 1337)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句