如何在派生表上创建触发器?

时间:2016-01-15 06:37:54

标签: sql oracle plsql

我创建了两个表customerorders,我已经在customer表中插入了一些数据,但订单表中没有任何内容。现在我想在订单表上创建一个触发器,它只复制id的订单表中的primary key列(在客户表中定义为o_id)(定义为{订单表中的{1}}。

我想检查我创建的触发器并在发现任何错误时修复它。

我的订单触发表:

foreign key

感谢。

3 个答案:

答案 0 :(得分:1)

  

我想在订单表上创建一个只能复制的触发器   id列   你可以开始这样做了,(顺便说一句,我不明白你想在哪里使用派生表?查询是什么)

 CREATE OR REPLACE TRIGGER tri_order
       BEFORE INSERT
       ON orders
       FOR EACH ROW
       declare cnt number (3);
    BEGIN

    select count(1) into cnt from customer where id=:new.id; // its is checking
    if cnt=0 then
    insert into customer (id) values (:new.id);
    end if;
    // you can add raise error here 
    END;
/

答案 1 :(得分:0)

您希望在触发器的帮助下将值从customer表复制到orders表,因此首先需要在customer表上创建触发器而不是{{1} } table,因为对于在customer表中完成的每个插入,触发器将被触发一次,这将在orders表中插入一个值。

orders

答案 2 :(得分:0)

您必须指定查找客户的规则。 例如:

   CREATE OR REPLACE TRIGGER tri_order
       BEFORE INSERT
       ON orders
       FOR EACH ROW
    BEGIN
       SELECT c.ID
       INTO   :NEW.o_id
       FROM   customer c
       WHERE c.customer_code = :NEW.customer_code; 
    END;