我有一个带有varchar主键的表,这是其他一些表的先行键。
就像是:
ID-------------NAME
1011001020-----product 1
1011001022-----product 2
1011001025-----product 3
然后,我有这个数组
array(
'1011001020',
'1011001022',
'1011001025',
'x',
'y'
)
该数组将用于在带有FK的另一个表中插入值,因此,如果第一个表中的值不是ID,则INSERT查询将停止。
在尝试插入之前如何找到“ x”和“ y”。我想避免从表1中选择所有ID并进行PHP比较,因为有很多记录。我宁愿使用MySQL方法
最佳答案
我建议以下过程:
创建表并将所有值插入表中。
删除不匹配的值。
添加外键约束。
第二步和第三步可以在SQL中轻松完成:
delete from temporarytable
where tt.otherid not in (select ot.otherid from othertable ot);
alter table temporarytable
add constraint fk_othertable foreign key (otherid) references othertable(otherid);
您可以根据需要加载数据。为了提高速度,我建议使用
load data infile
。