我创建了两个表customer
和orders
,我已经在customer
表中插入了一些数据,但订单表中没有任何内容。现在我想在订单表上创建一个触发器,它只复制id
的订单表中的primary key
列(在客户表中定义为o_id
)(定义为{订单表中的{1}}。
我想检查我创建的触发器并在发现任何错误时修复它。
我的订单触发表:
foreign key
感谢。
答案 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;