我有两个桌子。
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时,(更新view_table设置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
哪个触发器导致错误?我试图解决问题。任何帮助表示赞赏。