могу ли я запустить триггер для оператора select в mysql?

Я пытаюсь запустить инструкцию insert в таблице X каждый раз, когда я выбираю любую запись из таблицы Y, все равно, что я могу выполнить это, используя только MYSQL? что-то вроде триггеров?

Спасибо,

Короткий ответ №. Триггеры запускаются с помощью INSERT , UPDATE или DELETE .

Возможное решение для этого (странного) senario:

  • Во-первых, напишите несколько хранимых процедур, которые делают SELECT вы хотите в таблице X.
  • Затем запретите всем пользователям использовать только эти хранимые процедуры и не позволяйте им использовать SELECT в таблице X.
  • Затем измените хранимые процедуры, чтобы также вызвать хранимую процедуру, которая выполняет требуемое действие ( INSERT или что-то еще).

Нет – вы не можете запускать на SELECT – вам нужно будет создать хранимую процедуру (или любой другой тип средства ведения журнала – например, файл журнала или что-либо еще), который вы неявно вызываете в любом запросе, – проще, если вы создаете который вызывает ваш запрос, вызывает результаты ведения журнала и возвращает результаты запроса.

Если вы пытаетесь использовать таблицу X для регистрации порядка запросов SELECT в таблице Y (довольно обычная настройка регистрации запросов), вы можете просто отменить порядок операций и сначала запустить запрос INSERT , а затем запустить запрос SELECT .

Таким образом, вам не нужно беспокоиться о связывании двух операторов с TRIGGER : если ваш сервер выходит из строя между двумя операторами, вы уже регистрировали, что вам нужно, с вашим первым оператором и выполняете ли запрос SELECT или не выполняете влияние на базовую базу данных.

Если вы не регистрируете запросы, возможно, вы пытаетесь использовать таблицу Y в качестве очереди задач – ситуация, с которой я боролся, что привело меня к этой теме, – и вы хотите, чтобы какие-либо запросы сессии Y сначала блокировали все остальные сеансы из возвращаемых строк, чтобы вы могли выполнить некоторые операции с результатами и вставить вывод в таблицу X. В этом случае просто добавьте некоторые возможности ведения журнала в таблицу Y.

Например, вы можете добавить столбец «владелец» в Y, затем WHERE часть 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'); 

Опять же, ключ должен сначала регистрироваться, а затем запрашивать.

  • Динамический шаблон изменения данных
  • val () не вызывает change () в jQuery
  • Вызов Oracle после вставки или удаления
  • Передача идентификатора пользователя в триггеры PostgreSQL
  • Возможно ли выполнить проверку данных в MySQL с использованием регулярного выражения
  • jQuery - событие триггера, когда элемент удален из DOM
  • Давайте будем гением компьютера.