Я знаю, что в триггерах у вас есть ключевые слова NEW и OLD для ссылки на запись, которая вставляется или была вставлена в таблицу, к которой привязан триггер. Есть ли другие ключевые слова? Я ищу конкретно эту ссылку на таблицу, к которой привязан триггер (например, CUR_TABLE или что-то в этом роде); таким образом я могу скопировать триггер и применить его к нескольким таблицам с разными именами, и мне не нужно изменять тело триггера? Заранее благодарю за любую помощь!
Ключевые слова триггера создания MySQL
Ответы (2)
Динамический SQL нельзя использовать в триггерах. Чтобы триггер существовал, разработчик уже знает, в какой таблице он находится, поэтому имя таблицы теоретически должно быть жестко закодировано.
Если вы создаете триггеры, скажем, из хранимой процедуры, вы можете генерировать их с именами таблиц переменных, но не можете их выполнять (поэтому вам придется взять результат хранимой процедуры и выполнить его отдельно).
См.: http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html
Подготовленные операторы SQL (PREPARE, EXECUTE, DEALLOCATE PREPARE) можно использовать в хранимых процедурах, но не в хранимых функциях или триггерах. Таким образом, хранимые функции и триггеры не могут использовать динамический SQL (где операторы создаются в виде строк, а затем выполняются).
Это невозможно в MySQL. Вы можете сделать небольшой PHP-скрипт, который генерирует код для каждого «имени таблицы» в массиве :)
key_name
FROM CUR_TABLE) или что-то подобное - person NoodleOfDeath   schedule 04.07.2013