Итак, у меня есть таблица posts
, имеющая столбцы p_id
и pid
.
p_id | pid
-----------
1 | 2
2 | 8
. .
. .
. .
Они контролируются внешним интерфейсом, и сервер подключен к этой базе данных.
Теперь я часто обновляю значение pid
.
Я хочу удалить строку, которая ПОСЛЕ ОБНОВЛЕНИЯ pid
таблицы if p_id-pid < -10
Итак, я пишу (после изменения разделителя на //
с ;
),
CREATE TRIGGER deleteiften AFTER UPDATE on posts
FOR EACH ROW
begin
IF NEW.p_id-NEW.pid<-10 THEN delete from posts where p_id-pid<-10;
END IF;
end;
//
Теперь, когда у меня есть p_id
как 20 и я обновляю pid
до 31,
update posts set pid=31 where p_id=20;
У меня возникла следующая ошибка,
ERROR 1442 (HY000): Can't update table 'posts' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Я понимаю эту ошибку, что она не сможет обновиться, если есть условие,
НО я не Я не хочу ошибки. Я просто хочу УДАЛИТЬ строку автоматически, если pid
ОБНОВЛЕНИЕ соответствует условию триггера. Я застрял здесь.
Надеюсь, вы понимаете, что я пытаюсь сказать.