SQL Server-一次删除具有IF EXISTS的多列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server-一次删除具有IF EXISTS的多列相关的知识,希望对你有一定的参考价值。

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

尽管似乎不可能在每次出现时都强制它以IF EXISTS类别工作。

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 Server-一次删除具有IF EXISTS的多列的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 数据库一次性能删除的最大上限是多少?

SQL中多分支If语句的性能(Sql Server 2008)

删除表如果它存在于 Oracle (IF EXIST) [重复]

SQLite 判断表存在/删除表/创建表及if not exist插入数据

SQL Server:删除具有特定长度的单词

Error Fix – Replication subscriber does not exist on the server anymore(删除Replication时报错的解决办法)