mysql получает last_insert_id () в триггере - PullRequest
12 голосов
/ 28 июня 2011

Насколько я понимаю, когда вы вызываете last_insert_id (), он идет по соединениям, поэтому вы получите идентификатор последней строки, вставленной в то же соединение, где вызывается last_insert_id (), верно?

Так что, если я вызову last_insert_id () в триггере AFTER INSERT?

Что я хочу сделать, так это в основном это

DELIMITER $$
CREATE TRIGGER sometrigger
AFTER INSERT ON sometable
BEGIN
  INSERT INTO anothertable (id, lastup) VALUES (last_insert_id(), NOW());
END $$

Очень важно, чтобыid в 'anothertable' такой же, как в 'sometable' Будет ли это работать или мне следует создать вместо этого хранимую процедуру, которая будет вставлена ​​в обе таблицы?

Или, возможно, есть некоторые, в триггере, чтобы получить значения из оператора вставки, который вызвал срабатывание триггера?Я ничего не нашел об этом.

1 Ответ

18 голосов
/ 28 июня 2011

Вы должны иметь возможность использовать NEW.{id column name} для ссылки на последний идентификатор вставки (например, NEW.id, если столбец автоинкремента называется id.)

...