0

我有两张桌子

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 作为我的数据库。

4

1 回答 1

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列),那么将PARENT_NAMEandPARENT_OCCUPATION列存储在CHILD表中在逻辑上是多余的。

我会询问为什么您在CHILD表中有这两列。

希望能帮助到你...

于 2012-04-05T08:49:13.793 回答