Если вы пытаетесь использовать таблицу X для регистрации порядка SELECT
запросов в таблице Y (довольно обычная настройка регистрации запросов), вы можете просто изменить порядок операций и сначала запустить запрос INSERT
, , тогда запустит ваш запрос SELECT
.
Таким образом, вам не нужно беспокоиться о том, чтобы связать два оператора с TRIGGER
: если ваш сервер выходит из строя между двумя операторами, то вы уже зарегистрировали то, что вам нужно, с помощью вашего первого заявления и независимо от того, выполняется ли запрос SELECT
или не выполняется, не влияет на базовую базу данных.
Если вы не регистрируете запросы, возможно, вы пытаетесь использовать таблицу Y в качестве очереди задач - ситуация I боролся с тем, что привело меня к этой теме - и вы хотите, чтобы какие-либо запросы сессии 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');
Опять же, ключ должен сначала регистрироваться, затем запросить.