我想从表中移除约束条件。我的问题是:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
但是我得到了一个错误:
#1064 -你的SQL语法错误;请查看MySQL服务器版本对应的手册,在第一行使用“constraint FK_tbl_magazine_issue_mst_users”附近的正确语法
我想从表中移除约束条件。我的问题是:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
但是我得到了一个错误:
#1064 -你的SQL语法错误;请查看MySQL服务器版本对应的手册,在第一行使用“constraint FK_tbl_magazine_issue_mst_users”附近的正确语法
当前回答
为了给Robert Knight的答案补充一点,因为文章的标题本身没有提到外键(因为他的文章没有完整的代码示例,而且SO的注释代码块没有答案的代码块显示得那么好),我将为唯一的约束添加这个。这两种方法中的任何一种都可以去除约束:
ALTER TABLE `table_name` DROP KEY `uc_name`;
or
ALTER TABLE `table_name` DROP INDEX `uc_name`;
其他回答
Mysql有一个特殊的语法来删除外键约束:
ALTER TABLE tbl_magazine_issue
DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
删除约束最简单的方法是使用语法ALTER TABLE tbl_name DROP constraint符号;MySQL 8.0.19介绍:
从MySQL 8.0.19开始,ALTER TABLE允许使用更通用的(和SQL标准的)语法来删除和修改任何类型的现有约束,其中约束类型由约束名称决定
ALTER TABLE tbl_magazine_issue DROP CONSTRAINT FK_tbl_magazine_issue_mst_users;
db < > fiddle演示
在MySQL中没有DROP约束。在你的情况下,你可以使用DROP外键代替。
为了给Robert Knight的答案补充一点,因为文章的标题本身没有提到外键(因为他的文章没有完整的代码示例,而且SO的注释代码块没有答案的代码块显示得那么好),我将为唯一的约束添加这个。这两种方法中的任何一种都可以去除约束:
ALTER TABLE `table_name` DROP KEY `uc_name`;
or
ALTER TABLE `table_name` DROP INDEX `uc_name`;
对于那些使用MariaDB来这里的人:
注意,MariaDB通常允许DROP约束语句,例如删除检查约束:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
https://mariadb.com/kb/en/library/alter-table/