dee*_*kar 231 mysql constraints foreign-keys alter
我想从我的表中删除约束.我的查询是:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
#1064
- 您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便FK_tbl_magazine_issue_mst_users
在第1行的"约束" 附近使用正确的语法
Boh*_*ian 398
Mysql有一个特殊的语法来删除外键约束:
ALTER TABLE tbl_magazine_issue
DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
Run Code Online (Sandbox Code Playgroud)
Wel*_*ndo 51
我有同样的问题,我得用这个代码来解决:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
Run Code Online (Sandbox Code Playgroud)
Rob*_*ght 11
如果约束不是外键,例如.一个使用'UNIQUE CONSTRAINT(colA,colB)'添加,然后它是一个可以使用删除的索引ALTER TABLE ... DROP INDEX ...
同样很好,您可以暂时禁用mysql数据库中的所有外键检查:
SET FOREIGN_KEY_CHECKS=0;
并再次启用它:
SET FOREIGN_KEY_CHECKS=1;
为了给罗伯特·奈特(Robert Knight)的答案增加一点点,因为帖子的标题本身没有提到外键(并且由于他的标题没有完整的代码示例,而且由于SO的注释代码块的显示效果不及答案的代码好,块),我将其添加为唯一约束。这些工作之一都可以消除约束:
ALTER TABLE `table_name` DROP KEY `uc_name`;
Run Code Online (Sandbox Code Playgroud)
要么
ALTER TABLE `table_name` DROP INDEX `uc_name`;
Run Code Online (Sandbox Code Playgroud)
删除约束的最简单方法是使用MySQL 8.0.19ALTER TABLE tbl_name DROP CONSTRAINT symbol;
中引入的语法:
从 MySQL 8.0.19 开始,ALTER TABLE 允许使用更通用(和 SQL 标准)语法来删除和更改任何类型的现有约束,其中约束类型由约束名称确定
ALTER TABLE tbl_magazine_issue DROP CONSTRAINT FK_tbl_magazine_issue_mst_users;
Run Code Online (Sandbox Code Playgroud)