Я пытаюсь записать в две таблицы, используя два оператора INSERT
один за другим.
Второй оператор INSERT
должен использовать LAST_INSERT_ID()
первого оператора. Для этого я назначаю переменную @last_id_invoices
. Как я могу получить доступ к этой переменной в подготовленном операторе, когда число строк, которые должны быть записаны, является переменной?
В приведенном ниже примере кода используются значения stati c, но идея заключается в том, что и 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];