我有一个单独的过程,其中有两个插入语句用于两个不同的表。在插入table2之前,我必须将数据插入table1。我正在使用PHP来进行数据收集。我想知道的是如何在table2中插入多行,table2可以有很多行与table1相关联。我该怎么做?
我想只将一个人存储在table1中一次,但table2需要多行。如果这些插入语句是在单独的过程中,我不会有问题,但我只是不知道如何在没有table1拒绝第二个重复记录的情况下向table2中插入多行。
BEGIN
INSERT INTO user(name, address, city) VALUES(Name, Address, City);
INSERT INTO order(order_id, desc) VALUES(OrderNo, Description);
END
答案 0 :(得分:0)
我建议你单独做,否则你需要一个复杂的解决方案,如果出现问题就容易出错。
复杂的解决方案是:
如您所见,这很糟糕。
答案 1 :(得分:0)
很抱歉,但是什么阻止您在单独的查询中将数据插入到这些(看似无关的)表中?如果你不喜欢它中途失败的想法,你可以把它包装成一个事务。我知道,mysqli和pdo可以做得很好。
直接回答您的问题,insert的ignore
模式在插入警告期间会出错,因此在尝试插入重复行时会发出警告并且未插入行,但是没错。
答案 2 :(得分:0)
您可以在第一个语句中使用IGNORE
关键字
http://dev.mysql.com/doc/refman/5.1/en/insert.html:
如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告。例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止。使用IGNORE时,行仍未插入,但没有发出错误。但不知何故,这似乎对我来说效率相当低,“从眼睛后方穿过眼睛刺伤”-solution。