У меня есть две таблицы.
Таблица DOG
|-----------------------|
| ID | NAME | STATUS_ID |
|-----------------------|
| 1 | Tom | 1 |
|-----------------------|
Таблица APPLICATION
|---------------------------|
| ID | DOG_ID | IS_RETURNED |
|---------------------------|
| 1 | 1 | 0 |
|---------------------------|
И у меня есть таблица представлений
select A.ID, B.ID DOG_ID, B.NAME, A.IS_RETURNED
FROM DOG A
INNER JOIN APPLICATION B
ON A.ID = B.DOG_ID
Когда я пытаюсь обновить IS_RETURNED до 1, (обновить set_table set IS_RETURNED = 1, где DOG_ID = 1), я получаю сообщение об ошибке «Не могу обновить таблицу 'DOG' в сохраненной функции / триггере, потому что она уже используется оператором, который вызвал этосохраненная функция / триггер. "
Триггеры
CREATE TRIGGER `AFTER_UPDATE_DOG` AFTER UPDATE ON `DOG`
FOR EACH ROW BEGIN
IF NEW.STATUS_ID <> OLD.STATUS_ID AND NEW.STATUS_ID = 2 THEN
INSERT INTO APPLICATION (DOG_ID, PAYMENT_STATUS_ID, CREATED_DATE) VALUES (NEW.ID, 2, SYSDATE());
END IF;
IF NEW.STATUS_ID <> OLD.STATUS_ID AND NEW.STATUS_ID = 1 THEN
INSERT INTO APPLICATION (DOG_ID, IS_FINALISED, CREATED_DATE) VALUES (NEW.ID, 1, SYSDATE());
END IF;
END
CREATE TRIGGER `AFTER_INSERT_DOG` AFTER INSERT ON `DOG`
FOR EACH ROW UPDATE DOG SET AGE = NEW.ID WHERE ID = NEW.ID
CREATE TRIGGER `AFTER_UPDATE_APPLICATION` AFTER UPDATE ON `APPLICATION`
FOR EACH ROW BEGIN
IF NEW.IS_RETURNED <> OLD.IS_RETURNED AND NEW.IS_RETURNED = 'Yes' THEN
UPDATE DOG SET STATUS_ID = 3 WHERE ID = NEW.DOG_ID;
END IF;
END
Какой триггер вызывает ошибку?Я пытаюсь решить проблему.Любая помощь приветствуется.