sql - SQL Server-使用IF EXISTS一次删除多列

标签 sql sql-server tsql

SQL Server支持允许一次删除多个列的语法。 How to DROP multiple columns with a single ALTER TABLE statement in SQL Server?

尽管似乎不可能强迫每次出现都使用IF EXISTS clasue。

ALTER TABLE

DROP
| COLUMN [ IF EXISTS ]
      {
          column_name
      } [ ,...n ]

仅在列或约束已经存在时有条件地删除它。

例:
CREATE TABLE t(i INT, col1 INT, col2 INT);

ALTER TABLE t DROP COLUMN IF EXISTS col1, col2;
-- col1, col2 were successfully removed

ALTER TABLE t DROP COLUMN IF EXISTS col1,  col2;
-- Msg 4924 Level 16 State 1 Line 1
-- ALTER TABLE DROP COLUMN failed because column 'col2' does not exist in table 't'.

根据错误消息,IF EXISTS仅对第一列生效。

db<>fiddle demo

一次与多个列组合时,此子句是否有限制?

最佳答案

语法有点麻烦,但是

ALTER TABLE t DROP COLUMN IF EXISTS col1, 
                   COLUMN IF EXISTS col2;

工作良好

关于sql - SQL Server-使用IF EXISTS一次删除多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62091239/

相关文章:

php - Yii 从表中选择第一条记录,它在相关表中没有记录

mysql - 我可以连接本地 SQL Server 数据库作为 AWS SCT 中的源吗?

sql-server - OLE DB 命令中存储过程的 SSIS 返回值

sql - 在azure sql表中设置身份关闭

mysql - 根据参与者查找现有的消息 channel

sql-server - 登录后阶段连接 SQL Server 超时

sql - DBCC CLEANTABLE 未释放已用空间

sql-server - 如何在 SQL Server 触发器中复制插入、更新、删除的行

tsql - 如何在SQL Server中失败的插入/更新中返回行信息?

MySQL - 几个月内的每月排名