sql - 如何让SQL Server忽略检查?

标签 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

最佳答案

我曾经遇到过类似的问题,并通过将所有查询构建为字符串并使用 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/

相关文章:

mysql - 如何加入/子查询第二个表

MySQL 排序和减/加值

hibernate - Grails:保存对象时出错,很难理解,请勿使用 'property'关键字

php - jQuery 验证与 Codeigniter 问题

sql-server - 从 Sqlite 读取大量数据到 SQL Server 在预执行时失败

CSS3 验证错误

c# - System.Data.SqlClient.SqlException 与网络相关或特定于实例的错误

c# - Linq 仅查询每个唯一 ID 的前 N ​​行

c# - Visual Studio 2019 - 无法将自定义管道对象添加到工具箱 SSIS

sql - 这个 TSQL V() 方法/语法/函数是什么?