如果该列存在,如何使用ALTER将该列删除到MySQL表中?
我知道我可以使用ALTER TABLE my_table DROP COLUMN my_column,但是如果my_column不存在则会抛出错误。是否有其他语法可有条件地删除列?
ALTER TABLE my_table DROP COLUMN my_column
my_column
我正在使用MySQL版本4.0.18。
对于MySQL,没有: MySQL Feature Request。
无论如何,允许这样做无疑是一个坏主意:IF EXISTS表明您正在(具有)未知结构的数据库上运行破坏性操作。在某些情况下,这对于快速而又肮脏的本地工作是可以接受的,但是如果您很想对生产数据运行这样的语句(在迁移等过程中),那么您将大受打击。
IF EXISTS
但是,如果您坚持要求,那么首先在客户端中检查是否存在或捕获错误并不困难。
MariaDB还从10.0.2开始支持以下内容:
DROP [COLUMN] [IF EXISTS] col_name
即
ALTER TABLE my_table DROP IF EXISTS my_column;
但是,仅依靠MySQL的几个分支之一支持的非标准功能可能是一个坏主意。