如何从我的MySQL表中删除约束?
我想从我的表中删除约束。 我的查询是:
ALTER TABLE `tbl_magazine_issue` DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
但是我得到一个错误:
#1064
– 你的SQL语法错误; 检查与您的MySQL服务器版本相对应的手册,在第1行的“约束FK_tbl_magazine_issue_mst_users
”附近使用正确的语法
Mysql有一个特殊的语法来删除外键约束:
ALTER TABLE tbl_magazine_issue DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
我有同样的问题,我必须解决这个代码:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
MySQL中没有DROP CONSTRAINT
这样的事情。 在你的情况下,你可以使用DROP FOREIGN KEY
。
如果约束不是一个外键,例如。 一个使用'唯一约束(colA,colB)'添加,那么它是一个索引,可以使用ALTER TABLE ... DROP INDEX ...
- 转到表格的结构视图
- 您将在顶部看到2个选项a。表结构b。 关系视图 。
- 现在点击关系视图 ,在这里你可以放弃你的外键约束。 你会在这里得到所有的关系。
为了给Robert Knight的答案增加一点点,因为这个post的标题本身没有提到外键(因为他没有完整的代码样本,并且因为SO的评论代码块没有显示出答案的代码块),我会添加这个独特的约束。 其中任何一个都可以放弃这个限制:
ALTER TABLE `table_name` DROP KEY `uc_name`;
要么
ALTER TABLE `table_name` DROP INDEX `uc_name`;
一些ORM或框架对外键使用与默认FK_[parent table]_[referenced table]_[referencing field]
不同的命名约定,因为它们可以被修改。
例如,Laravel使用[parent table]_[referencing field]_foreign
作为命名约定。 您可以使用此查询来显示外键的名称,如下所示:
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';
然后通过运行前面提到的DROP FOREIGN KEY查询来删除外键,它是正确的名称。
这将在MySQL的作品放弃约束
alter table tablename drop primary key; alter table tablename drop foreign key;