当我验证(如果存在)时,SQL错误指出无效列名。为什么?
技术问答
249 人阅读
|
0 人回复
|
2023-09-14
|
有一个创建新列的过渡脚本DOCUMENT_DEFINITION_ID以MESSAGE_TYPE_ID ; t g; k2 {! r- O# r. [! C
5的值过渡,然后删除MESSAGE_TYPE_ID列。
& \0 i& k1 N7 y. l' R一切第一次正常运行,但当我第二次运行脚本时,出现了这个错误:
5 Q. [9 u0 G) r# c5 y2 @& Z无效的列名“ MESSAGE_TYPE_ID”。) W: d- C: x/ r% w
这毫无意义,因为我已经验证了列是否存在。) p! }) K! V% n9 r% J: O
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'MESSAGE_TYPE_ID' AND TABLE_NAME = 'DOCUMENT_QUEUE')BEGIN UPDATE DOCUMENT_QUEUE SET DOCUMENT_DEFINITION_ID = MESSAGE_TYPE_ID 5 --Error here.. but condition is not met为什么?
+ n$ v: K$ q# D1 N # _' |+ s9 k# ]1 ]3 z' {4 m5 |* Q
解决方案: 6 I3 m) M3 g+ C5 I
试试这个% L* K' n2 Q4 N! q; x" A; u$ X
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'MESSAGE_TYPE_ID' AND TABLE_NAME = 'DOCUMENT_QUEUE')BEGIN EXEC( 'UPDATE DOCUMENT_QUEUE SET DOCUMENT_DEFINITION_ID = MESSAGE_TYPE_ID 5 ')END在动态语句中包装更新,绕过延迟名称分析。 |
|
|
|
|
|