Ключевые слова триггера создания MySQL

Я знаю, что в триггерах у вас есть ключевые слова NEW и OLD для ссылки на запись, которая вставляется или была вставлена ​​в таблицу, к которой привязан триггер. Есть ли другие ключевые слова? Я ищу конкретно эту ссылку на таблицу, к которой привязан триггер (например, CUR_TABLE или что-то в этом роде); таким образом я могу скопировать триггер и применить его к нескольким таблицам с разными именами, и мне не нужно изменять тело триггера? Заранее благодарю за любую помощь!


person NoodleOfDeath    schedule 03.07.2013    source источник
comment
Если вы находитесь в этом триггере, то триггер знает, какую таблицу использовать. Однако я запутался в вашем вопросе.   -  person Rob W    schedule 04.07.2013
comment
я хочу использовать оператор select внутри триггерной функции, например (SELECT key_name FROM CUR_TABLE) или что-то подобное   -  person NoodleOfDeath    schedule 04.07.2013


Ответы (2)


Динамический SQL нельзя использовать в триггерах. Чтобы триггер существовал, разработчик уже знает, в какой таблице он находится, поэтому имя таблицы теоретически должно быть жестко закодировано.

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

См.: http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html

Подготовленные операторы SQL (PREPARE, EXECUTE, DEALLOCATE PREPARE) можно использовать в хранимых процедурах, но не в хранимых функциях или триггерах. Таким образом, хранимые функции и триггеры не могут использовать динамический SQL (где операторы создаются в виде строк, а затем выполняются).

person Rob W    schedule 03.07.2013

Это невозможно в MySQL. Вы можете сделать небольшой PHP-скрипт, который генерирует код для каждого «имени таблицы» в массиве :)

person Jehad Keriaki    schedule 03.07.2013