SQL Server语言 - 一次删除多个带有 IF EXISTS 的列



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

尽管似乎不可能强迫它与每次出现的IF EXISTS紧握一起工作。

更改表

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仅对第一列生效。

数据库<>小提琴演示

当同时与多列组合时,此条款是否有限制?

语法有点麻烦,但是

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

工作正常

最新更新