我在代码1451中遇到mysql错误。
无法删除或更新父行:外键约束失败(
online_store_admin
。osa_admin_logs
,CONSTRAINTfk_admins_logs
FOREIGN KEY(aid
)参考osa_admins
(aid
))
这里是sql语句:
drop table if exists osa_admins; create table if not exists osa_admins( aid int unsigned not null auto_increment, uid varchar(50) not null, pass char(41) not null, erp_id int unsigned not null, last_login int unsigned not null, is_block tinyint unsigned not null, menus varchar(50) not null, is_login tinyint unsigned not null, ip_login char(15) not null, constraint idx_osa_admins primary key using btree(aid) ); insert into osa_admins value (NULL, 'root', password('6789'), '0', '0', '0', '*', '0', '127.000.000.001'), (NULL, 'ryu', password('6789'), '0', '0', '0', '*', '0', '127.000.000.001'); drop table if exists osa_admin_logs; create table if not exists osa_admin_logs( lid bigint unsigned not null, aid int unsigned not null, dates int unsigned not null, logs text not null, constraint idx_osa_admin_logs primary key using btree(lid), constraint fk_admins_logs foreign key (aid) references osa_admins(aid) match full on update cascade on delete cascade ); insert into osa_admin_logs values (NULL, '2', '0', 'some action here'), (NULL, '2', '0', 'again, some action here');
当我使用这句话时出现问题:
从osa_admins删除,其中aid ='2';
我想我已经设置了“删除级联”。有谁知道如何删除级联?所以我没有必要手动检测osa_admin_logs数据。哦,我使用innodb作为数据库引擎(我有默认的mysql)。
对不起,我问同样的问题有答案,请告诉我在哪里可以得到我的问题。
谢谢。
答案 0 :(得分:11)
使用以下命令执行此操作:
SET foreign_key_checks = 0;
DELETE FROM your_table_name WHERE your_condition;
SET foreign_key_checks = 1;
答案 1 :(得分:7)
从约束中删除match full
使用显式的MATCH子句 没有指定的效果,和 还会导致ON DELETE和ON UPDATE 条款被忽略。对于这些 原因,指定MATCH应该是 避免。
MySql docs http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html