Dak*_*ath 1 sql sql-server validation
我有一个SQL脚本填充临时列,然后删除脚本末尾的列.它第一次运行时,它工作正常,因为列存在,然后它被删除.该脚本第二次中断,因为该列不再存在,即使IF语句确保它不会再次运行.如何绕过此字段的SQL检查?
IF EXISTS (SELECT name FROM syscolumns
WHERE name = 'COLUMN_THAT_NO_LONGER_EXISTS')
BEGIN
INSERT INTO TABLE1
(
COLUMN_THAT_NO_LONGER_EXISTS,
COLUMN_B,
COLUMN_C
)
SELECT 1,2,3 FROM TABLE2
ALTER TABLE TABLE1 DROP COLUMN COLUMN_THAT_NO_LONGER_EXISTS
END
Run Code Online (Sandbox Code Playgroud)
我有一个类似的问题,并通过将所有查询构建为字符串并使用Exec()调用执行它来绕过它.这样,查询(选择,插入或其他)在执行之前不会被解析.
虽然它不漂亮或优雅.
例如
exec('INSERT INTO TABLE1(COLUMN_THAT_NO_LONGER_EXISTS,COLUMN_B,COLUMN_C) SELECT 1,2,3 FROM TABLE2')