大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
那就需要先删除主表里的记录,再删除子表里的记录。
吉隆ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
比如有如下数据:
A表
uid name
1 张三
2 李四
B表
uid 科目 分数
1 数学 90
1 语文 80
2 数学 70
2 语文 60
现在要删除A表里张三的记录,如果有外键,直接
delete from A where uid=1
这样是删除不了的。
所以要先删除B表里uid=1的记录再执行上边这句
delete from B where uid=1
然后再执行
delete from A where uid=1
就可以了
mysql删除外键语法:
1
alter table ss_accesscode drop foreign key 外键约束名称;
外键定义:
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
作用:
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。
在删除那个把该外键作为主键的表之前,你先把包含外键的那个表中的外键全部删掉,置为null,或者直接将那列删掉,这样就没有地方引用这些外键,你就可以将那个表删除掉了。希望可以帮忙。记得以前做过类似的东西,删除将外键作为主键的表之前,必须将引用到这个键的内容置空,即没有引用该键,这样便可以删除了。
语法:ALTER TABLE 表名 DROP CONSTRAINT 外键名
例子:
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
在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;
分两步走:
确认受外键约束的数据是否可用同步删除。如果可用则直接删除,如果不可以则接触外键约束。
外键解除或受外键约束数据被删除后,可用直接删除自身数据。
alter table test drop foreign key 外键名称;