我有两张桌子
Parent(id, name, occupation)
Child(id, name, gender,parent_id, parent_name, parent_occupation)
现在在子项中插入值我将运行chi查询
insert into Child(id,name,gender,parent_id) values(10,'XYZ','Male',15);
所以现在我的要求是当执行此插入查询时,将运行触发器并从父表中获取id 15的名称和占用(子记录的parent_id),并将其添加到字段parent_name和parent_occupation中新插入的行中
我使用oracle 11g作为我的数据库。如果有人有答案,请帮助我。 这真的很紧急。
答案 0 :(得分:2)
你想要类似于此的东西(尽管你需要添加代码来处理异常):
CREATE OR REPLACE
TRIGGER ai_child_tg
AFTER INSERT ON child
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT name,
occupation
INTO :NEW.parent_name,
:NEW.parent_occupation
FROM parent
WHERE id = :NEW.parent_id;
EXCEPTION
WHEN no_data_found
THEN
<handle_your_exception_>
END ai_child_tg;
但是,如果您的CHILD
表确实是PARENT
表的关系子,并且存在FK关系(通过CHILD.PARENT_ID
列),则存储{{1 <{1}}表中的{}和PARENT_NAME
列在逻辑上是多余的。
我会查询为什么你在PARENT_OCCUPATION
表中有这两列。
希望它有所帮助...