MySQL Триггеры - ПОСЛЕ ОБНОВЛЕНИЯ в табличном условии УДАЛИТЬ СТРОКУ, ЕСЛИ условие - PullRequest
0 голосов
/ 13 января 2020

Итак, у меня есть таблица 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 ОБНОВЛЕНИЕ соответствует условию триггера. Я застрял здесь.

Надеюсь, вы понимаете, что я пытаюсь сказать.

...