我正在医疗店做一个项目。 我制作了三张表如下:
我希望以这样的方式连接这些表:medsold
表可以从medicine
表和customer
表中获取数据。
EER图如下:
当我执行以下查询时:
insert into medSold(medsold_id,med_id,c_id,generic_name,brand_name,mft_date,exp_date,billing_date,med_name) values ('','','','sumthing1','dntknw1','2012-11-10','2014-12-20','','crocine');
它出现以下错误:
错误代码:1452。无法添加或更新子行:外键约束失败(
mysql1
。medSold
,CONSTRAINTc_id
FOREIGN KEY(c_id
)参考customer
(c_id
)在更新时不执行任何操作的行动)
为什么会发生这种情况?
答案 0 :(得分:3)
如果您强行要插入记录,可以禁用外键检查。
设置foreign_key_checks = 0;
插入medSold(medsold_id,med_id,c_id,generic_name,brand_name,mft_date,exp_date,billing_date,med_name)值('','','','sumthing1','dntknw1','2012-11-10','二零一四年十二月二十零日' , '', 'crocine');
set foreign_key_checks = 1;
答案 1 :(得分:0)
检查两个表上的c_id是否相同(类型,大小,非空和无符号标志),并确保customer表包含您正在访问的密钥。
此外,如果要将外键设为空,请使用(NULL)而不是''
答案 2 :(得分:0)
这是foriegn密钥关系中的基本错误。
在插入子表之前,必须在父表中插入记录。
您尝试在外键表中输入子表中没有c_id。
答案 3 :(得分:0)
使用
set foreign_key_checks=0;
insert into medSold(medsold_id,med_id,c_id,generic_name,brand_name,mft_date,exp_date,billing_date,med_name) values ('','','','sumthing1','dntknw1','2012-11-10','2014-12-20','','crocine');
set foreign_key_checks=1;
这将禁用外键。