我正在尝试使用两个INSERT
语句一个接一个地写入两个表。
第二条INSERT
语句应使用第一条语句的LAST_INSERT_ID()
。为此,我分配了变量@last_id_invoices
。当要写入的行数是变量时,如何在准备好的语句中访问该变量?
下面的示例代码使用静态值,但是想法是customer
和items
都将来自另一个脚本,因此不知道会有多少items
。
理想情况下,@last_id_invoices
数组中的items
将被解释为对语句中变量的引用,而不是字符串,如以下示例所示:
var customer = 123;
var items = [
['@last_id_invoices', 11],
['@last_id_invoices', 12]
];
var sql = "\
INSERT INTO invoices (customer) VALUES (?);\
SET @last_id_invoices = LAST_INSERT_ID();\
INSERT INTO line_items (invoice_id, product_id)\
VALUES ?;\
";
var inserts = [customer, items];
您快到了。您可以将变量传递给第二个插入,如下所示:
var sql = "\
INSERT INTO invoices (customer) VALUES (?);\
SET @last_id_invoices = LAST_INSERT_ID();\
INSERT INTO line_items (invoice_id, product_id) VALUES (@last_id_invoices, ?);\
";