Подтвердить что ты не робот

Вывод OUTPUT в MySQL

Есть ли способ имитировать предложение OUTPUT в MySQL, поскольку у нас есть предложение OUTPUT в SQL Server.

Вот вопрос, который у меня есть

UPDATE       employee
SET          empage = 10
OUTPUT       INSERTED.empid
WHERE        (empage < 10)

Так как мне нужно иметь эту функциональность для базы данных сервера MySQL тоже.

Просьба предложить лучший способ достичь этой функциональности.

4b9b3361

Ответ 1

  • Вы можете создать триггер и вставить нужные значения в другую таблицу.
  • Я не уверен, но для таблиц MYISAM вы можете заблокировать таблицу employee, выбрать и вставить значения в другую таблицу, а затем обновить и разблокировать таблицу employee.

EDIT:

Я пробовал один сценарий с таблицей InnoDb, кажется, он работает -

START TRANSACTION;

SELECT * FROM table WHERE id = 1 FOR UPDATE; -- lock rows
-- Or call this select to insert and lock rows
-- INSERT INTO table_output SELECT * FROM table WHERE id = 1 FOR UPDATE;

-- Make modifications
UPDATE table SET column1 = '111' WHERE id = 1;

COMMIT;

инструкция SELECT (для предложения UPDATE)