我想创建一个触发器上的任何插入或更新的表上,其中包含Diseases
与animalName
和diseaseName
。 我有另一张表,Animals
,其中保存的信息如animalName
(这是一个主键;不要评论设计,因为它不是我的),和他的amountOfDisease
。 我希望在插入,更新或删除Diseases
表格时,疾病的数量会自动更新。ORACLE PL/SQL插入更新另一个表值
我很难理解如何获取当前的animalName
,以便我可以更新他的amountOfDisease
。
到目前为止,我有这样的:
CREATE OR REPLACE TRIGGER update_animal_diseases
AFTER INSERT OR UPDATE OR DELETE ON Diseases
FOR EACH ROW
BEGIN
UPDATE Animals SET amountOfDisease = amountOfDisease + 1
WHERE animalName = :NEW.animalName;
END;
/
哪个编译,但不起作用,如Animals
值永远不会上插入一些内容Diseases
更新。我也试过这个:
CREATE OR REPLACE TRIGGER update_animal_diseases
AFTER INSERT OR UPDATE ON Diseases
FOR EACH ROW
DECLARE
DiseasesCount INTEGER;
BEGIN
SELECT COUNT(*) INTO DiseasesCount
FROM Diseases
WHERE animalName = :OLD.animalName;
UPDATE Animals SET amountOfDisease = DiseasesCount WHERE animalName = :OLD.animalName;
END;
/
正如你所看到的,我也并不真正了解:NEW和:OLD是什么。我该如何解决我的问题,即在Diseases
表的任何修改中更新动物amountOfDisease
?
要说清楚的是,我所得到的插入Diseases
就是没有。据我所知,没有任何反应。
@GordonLinoff正如我在帖子结尾所说,没有任何反应,值没有正确更新。 – user96649