例子:
mysql>CREATE TABLE categories (
->category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
->name varchar(30) NOT NULL,
->PRIMARY KEY(category_id)
->) ENGINE=INNODB
mysql>CREATE TABLE articles (
->article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,
->title varchar(255) NOT NULL,
->category_id tinyint(3) unsigned NOT NULL,
->member_id int(11) unsigned NOT NULL,
->INDEX (category_id),
->FOREIGN KEY (category_id) REFERENCES categories (category_id),
->PRIMARY KEY(article_id)
->) ENGINE=INNODB
外键名是什么:在上面的例子中category_id
分两步走:
确认受外键约束的数据是否可用同步删除。如果可用则直接删除,如果不可以则接触外键约束。
外键解除或受外键约束数据被删除后,可用直接删除自身数据。
alter table test drop foreign key 外键名称
在MySQL中删除一张表或一条数据的时候,出现[Err] 1451 -Cannot deleteorupdatea parent row:
aforeignkeyconstraintfails (...)
这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
禁用外键约束,我们可以使用:
SETFOREIGN_KEY_CHECKS=0
然后再删除数据
启动外键约束,我们可以使用:
SETFOREIGN_KEY_CHECKS=1
查看当前FOREIGN_KEY_CHECKS的值,可用如下命令:
SELECT @@FOREIGN_KEY_CHECKS
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)