2016-01-27 3 views
0

Я установил триггер в PhpMyAdmin с базой данных MySQL с AFTER и INSERT:PHPMYADMIN Trigger вызывает Общие ошибки: 1442

update table1 
set col1= col2 

Тогда, когда я иду и вставить строку, это сообщение об ошибке появляется:

Ошибка 500 CDbCommand не выполнил инструкцию SQL: SQLSTATE [HY000]: Общая ошибка: 1442 Невозможно обновить таблицу «card» в хранимой функции/триггере, поскольку она уже используется оператором, который вызывал эту хранимую функцию/триггер.

Любые идеи?

+0

Вы должны опубликовать определение вашего триггера. – maxhb

+0

Нет, нет 'CREATE TRIGGER ...' – maxhb

ответ

0

Сообщение об ошибке в данном конкретном случае достаточно явное: вы пытаетесь изменить саму таблицу в триггере, на котором был вызван сам триггер, и это не разрешено в mysql. См MySQL документации на Restrictions on Stored Programs:

A stored function or trigger cannot modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger.

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

Смежные вопросы