Информация о последней добавленной строке без автоматического увеличения PK - PullRequest
0 голосов
/ 02 июня 2011

У меня есть несколько таблиц, которые «разделяют» один первичный ключ с автоинкрементом - это выполняется с помощью триггера на вставке, который выглядит следующим образом:

FOR EACH ROW 
    BEGIN
        INSERT INTO master (time) VALUES (NOW());
        SET NEW.id = LAST_INSERT_ID();
    END

Это создает PK длятолько что вставленный ряд.Это, однако, создает проблему, которую я не могу понять, что это был за идентификатор.last_insert_id, очевидно, ничего не возвращает, так как вышеприведенный оператор не был выполнен для того, что считается «текущим соединением».

Есть ли способ получить доступ к самой последней вставленной строке в соединении без автоматически увеличивающегося первичного ключа?1006 *

Обновление: В качестве временной (?) Меры я удалил триггер и теперь сгенерировал идентификатор, сделав вставку в master в моей модели.Просто кажется, что было бы лучше, если бы я мог как-то вернуть значение, установленное триггером.

1 Ответ

1 голос
/ 03 июня 2011

Документ говорит: «Для сохраненных функций и триггеров, которые изменяют значение [LAST_INSERT_ID], значение восстанавливается, когда функция или триггер заканчиваются, поэтому следующие операторы не видят измененное значение.»

Попробуйте хранимую процедуру, которая может сделать ваши два INSERTS и вернуть назначенный ID.

Или, отказаться от выполнения каких-либо действий "Путь Oracle", выпить MySql Kool-Aid и просто использовать автоинкрементидентификатор на столе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...