Как мне установить в столбце число, сгенерированное MySQL для ранее установленной строки? - PullRequest
0 голосов
/ 09 ноября 2019

Итак, я создал оператор INSERT для MySQL, который добавил определенную строку в таблицу. Invoice_id был установлен в DEFAULT. Теперь мне нужно выяснить, что это за автоматически сгенерированный идентификатор, чтобы продолжить. Как мне это сделать?

Я пытался использовать DEFAULT и AUTO, чтобы посмотреть, справятся ли они. Они этого не сделали.

    INSERT into ap.terms 
VALUES (terms_id = 6, terms_description = 'Net due 120 days', terms_due_days = 120);

UPDATE ap.terms 
SET terms_description = 'Net due 125 days', terms_due_days = 125
WHERE terms_id = 6;

DELETE FROM ap.terms
WHERE terms_id = 6;

INSERT into ap.invoices
VALUES (AUTO_INCREMENT, 32, 'AX-014-027', '2014-08-01', '434.58', '0.00', '0.00', 2, '2014-08-31', NULL);

INSERT into ap.invoice_line_items
VALUES (invoice_sequence = 1, account_number = 160, line_item_amount = '180.23', line_item_description = 'Hard drive'), (invoice_sequence = 2, account_number = 527, line_item_amount = '254.35', line_item_description = 'Exchange Server update')
SET invoice_id = last_insert_id(1,1);

UPDATE ap.invoices
SET credit_total = invoice_total*0.1, invoice_total = (payment_total + credit_total)
WHERE invoice_number = 'AX-014-027';  

UPDATE ap.vendors
SET default_account_number = 403
WHERE vendor_id = 44;

UPDATE ap.invoices
SET terms_id = 2
WHERE default_terms_id = 2;

DELETE FROM ap.invoice_line_items
WHERE invoice_id = last_insert_id(1,1);

DELETE FROM ap.invoices
WHERE invoice_id = last_insert_id(1,1);  

Итак, в строке 16, где написано "SET invoice_id = last_insert_id (1,1)", находится моя ошибка. Как это исправить?

Код ошибки 1062, у вас есть ошибка в вашем синтаксисе sql. Проверьте соответствующее руководство.

1 Ответ

0 голосов
/ 09 ноября 2019

Ваша структура таблицы неверна. Ваш первичный ключ должен быть установлен на автоинкремент, по умолчанию нет. Вы должны использовать LAST_INSERT_ID() для получения последнего идентификатора строки, вставленного в базу данных.

...