一尘不染

使用ALTER删除列(如果它存在于MySQL中)

mysql

如果该列存在,如何使用ALTER将该列删除到MySQL表中?

我知道我可以使用ALTER TABLE my_table DROP COLUMN my_column,但是如果my_column不存在则会抛出错误。是否有其他语法可有条件地删除列?

我正在使用MySQL版本4.0.18。


阅读 1388

收藏
2020-05-17

共1个答案

一尘不染

对于MySQL,没有: MySQL Feature
Request

无论如何,允许这样做无疑是一个坏主意:IF EXISTS表明您正在(具有)未知结构的数据库上运行破坏性操作。在某些情况下,这对于快速而又肮脏的本地工作是可以接受的,但是如果您很想对生产数据运行这样的语句(在迁移等过程中),那么您将大受打击。

但是,如果您坚持要求,那么首先在客户端中检查是否存在或捕获错误并不困难。

MariaDB还从10.0.2开始支持以下内容:

DROP [COLUMN] [IF EXISTS] col_name

ALTER TABLE my_table DROP IF EXISTS my_column;

但是,仅依靠MySQL的几个分支之一支持的非标准功能可能是一个坏主意。

2020-05-17