Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » Ошибка при вставке

Страниц (1): [1]
 

1. Wolfram - 26 Мая, 2018 - 15:14:54 - перейти к сообщению
Доброго времени суток.
Возникла такая проблема. Создал триггер, чтобы после добавления новой записи в таблицу он удалял определённые записи. Он создался всё хорошо, но когда я хочу добавить новую запись выдаётся ошибка: #1442 - Can't update table 'requests' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
В чём проблема?
Заранее спасибо.

Сам триггер:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TRIGGER del_old
  3. AFTER INSERT ON requests
  4. FOR EACH ROW
  5. BEGIN
  6. DELETE FROM requests WHERE id_status = 3;
  7. END
  8.  
2. Мелкий - 26 Мая, 2018 - 16:45:56 - перейти к сообщению
Mysql (хот вы не упомянули используемую СУБД, очевидно что речь именно о mysql) запрещает из триггера модифицировать строки этой самой таблицы. Вообще запрещает, даже after insert триггер не может делать явно непересекающийся с этим триггером delete.

Нормального обходного манёвра вроде бы нет. Ну разве только писать в таблицу исключительно через хранимку. Но совет - используйте или mysql или хранимки, но не надо использовать хранимки в mysql.
3. Wolfram - 26 Мая, 2018 - 17:17:16 - перейти к сообщению
Мелкий пишет:
Mysql (хот вы не упомянули используемую СУБД, очевидно что речь именно о mysql) запрещает из триггера модифицировать строки этой самой таблицы. Вообще запрещает, даже after insert триггер не может делать явно непересекающийся с этим триггером delete.

Нормального обходного манёвра вроде бы нет. Ну разве только писать в таблицу исключительно через хранимку. Но совет - используйте или mysql или хранимки, но не надо использовать хранимки в mysql.

Понял, спасибо.

 

Powered by ExBB FM 1.0 RC1