Если вы пытаетесь использовать таблицу X для записи порядка SELECT
запросов в таблице Y (довольно распространенная настройка ведения журнала запросов), вы можете просто изменить порядок операций и выполнить запрос INSERT
сначала , , затем выполните запрос SELECT
.
Таким образом, вам не нужно беспокоиться о связывании двух операторов с TRIGGER
: если ваш сервер дает сбой между двумя операторами, то вы уже записали то, что вас волнует, с вашим первым оператором, иSELECT
запрос выполняется или не выполняется, не влияет на базовую базу данных.
Если вы не регистрируете запросы, возможно, вы пытаетесь использовать таблицу Y в качестве очереди задач - ситуация, с которой я столкнулсяэто привело меня к этой теме - и вы хотите, чтобы любой сеансовый запрос Y сначала блокировал все остальные сеансы из возвращенных строк, чтобы вы могли выполнить некоторые операции с результатами и вставить вывод в таблицу X. В этом случае просто добавьтенекоторые возможности ведения журнала в таблице Y.
Например, вы можете добавить столбец «владелец» в Y, а затем прикрепить часть WHERE
вашего запроса SELECT
к оператору UPDATE
, запустить его,а затем измените ваш запрос SELECT
, чтобы он отображал только те результаты, которые были запрошены вашим UPDATE
:
UPDATE Y SET owner = 'me' WHERE task = 'new' AND owner IS NULL;
SELECT foo FROM Y WHERE task = 'new' AND owner = 'me';
... поработайте над foo, затем...
INSERT INTO X (output) VALUES ('awesomeness');
Опять же, ключ для регистрации сначала , а затем запрос.