我有一个 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
最佳答案
我曾经遇到过类似的问题,并通过将所有查询构建为字符串并使用 Exec() 调用执行它们来解决它。这样查询(选择、插入或其他)在执行之前不会被解析。
虽然它并不漂亮或优雅。
例如
exec('INSERT INTO TABLE1(COLUMN_THAT_NO_LONGER_EXISTS,COLUMN_B,COLUMN_C) SELECT 1,2,3 FROM TABLE2')
关于sql - 如何让SQL Server忽略检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837382/