Oracle - 如何在两个表之间使用“插入后”触发器?

时间:2014-01-11 14:26:31

标签: sql oracle triggers oracle-sqldeveloper

我创建了数据库。我有连接的表。

  

预订:id_book,title,author,...,secondary(表子公司的外键)

     

借用:id_borr,访客,...书(表格的外键)

     

子公司:id_subs,city,capacity,...

现在我有:

create table subsidiary
(
   id_subs              smallint                       primary key,
   city                 varchar(50),
   capacity             integer
);

create table book
(
   id_book              integer                       primary key,
   title                varchar(1000),
   author               varchar(100),
   subsidiary           smallint                      null,
   FOREIGN KEY (subsidiary) REFERENCES subsidiary(id_subs)
);

create table borrowing
(
   id_borr              integer                       primary key,
   book                 integer                       null,
   visitor              varchar(100),
   FOREIGN KEY (book) REFERENCES book(id_book)
);

我想表现得像: Book有一个子公司。但是在借入(某些书籍)之后,将书籍变更子公司变为NULL。

我发现只有这个例子(和类似的):http://www.techonthenet.com/oracle/triggers/after_insert.php,但我仍然不确定。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

假设您不希望对子表执行任何操作,可以按如下方式编写触发器。

CREATE OR REPLACE TRIGGER trg_borrowing 
  AFTER INSERT ON borrowing
 FOR EACH ROW
BEGIN
  UPDATE book
     SET subsidiary = NULL
   WHERE id_book = :NEW.book;
END;
/