如果 MySQL 表中存在某列,如何使用 ALTER 删除该列?
我知道我可以使用ALTER TABLE my_table DROP COLUMN my_column
,但是如果my_column
不存在。是否有替代语法来有条件地删除列?
我使用的是 MySQL 版本 4.0.18。
对于 MySQL 来说,没有: MySQL 功能请求 http://bugs.mysql.com/bug.php?id=10789.
无论如何,允许这样做可以说是一个非常糟糕的主意:IF EXISTS
表明您正在对结构未知的数据库运行破坏性操作。在某些情况下,这对于快速而肮脏的本地工作来说是可以接受的,但如果您想针对生产数据(在迁移等中)运行这样的语句,那么您就是在玩火。
但如果您坚持的话,首先在客户端检查是否存在或捕获错误并不困难。
MariaDB 从 10.0.2 开始还支持以下版本:
DROP [COLUMN] [IF EXISTS] col_name
i. e.
ALTER TABLE my_table DROP IF EXISTS my_column;
但依赖于仅由 MySQL 的几个分支之一支持的非标准功能可以说是一个坏主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)