SQL Server - 如果存在则同时删除多列

6

SQL Server支持一次删除多个列的语法。 如何在SQL Server中使用单个ALTER TABLE语句删除多个列?

尽管似乎无法强制其对每个出现的列都使用IF EXISTS子句。

ALTER TABLE

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

Conditionally drops the column or constraint only if it already exists.

例子:

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演示

是否在同时处理多个列时有此子句的限制?

1个回答

15
语法有点繁琐,但
ALTER TABLE t DROP COLUMN IF EXISTS col1, 
                   COLUMN IF EXISTS col2;

运行良好


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接