Мне нужно написать триггер, который будет обновлять запись сообщения после его добавления, чтобы обновить, если текст сообщения добавлен 20 слов или дольше. Я продолжаю получать ошибки ORA-06512 и ORA-04088, что очевидно, когда у вас активирован триггер INSERT, и ваш триггер вызывает другой INSERT, создавая бесконечный цикл.Как разрешить цикл в моем триггере SQL?
Но у меня есть ОБНОВЛЕНИЕ в моем триггере, который, как предполагается, срабатывает только в INSERT. Я не могу найти недостаток в своей логике для кода. Есть ли другой, чтобы написать это?
CREATE OR REPLACE TRIGGER Length
AFTER INSERT ON Messages
FOR EACH ROW
WHEN (length(new.msg_text) - length(replace(new.msg_text, ' ', '')) >= 20)
BEGIN
UPDATE Messages
set Messages.length = 1
WHERE Messages.msgID = :new.msgID;
END;
/
Я получаю ошибку компиляции, когда триггер создается и после этого, когда триггер срабатывает ORA-04098: триггер «XXXX.LENGTH» неверно и не удалось выполнить повторную проверку – Kaska
Да, есть таблица этого имени. Есть ли альтернативный способ попробовать? – Kaska
Есть ли в сообщениях столбец с именем 'length'? Ваш вопрос, безусловно, предполагает, что это так. - Gordon Linoff –