使用触发器,根据条件查询出a和b表中数据,插入到c表。
create table a
(
fid VARCHAR2(44),
fname_l2 VARCHAR2(255),//名称
b_fid VARCHAR2(44),//b表的id
fnumber NVARCHAR2(80)
);
create table b
(
fid VARCHAR2(44),
fname_l2 VARCHAR2(255),//名称
fdesc NVARCHAR2(80)//备注
);
b表中有数据(‘1’,'水果','优质水果')。
create table c
(
a_id VARCHAR2(44),//a表id
a_name VARCHAR2(255),//a表名称
b_name VARCHAR2(255),//b表名称
b_desc NVARCHAR2(80)//b表备注
);
-- 触发器
CREATE OR REPLACE TRIGGER t_c_tri
before insert OR DELETE OR UPDATE
ON a
FOR EACH ROW --说明创建的是行级触发器
BEGIN
INSERT into c(a_id,a_name,b_name_b_desc)
select a.fid,a.fname_l2,b.fname_l2,b.fdesc
from a left join b on a.b_fid=b.fid where a.fid = :new.fid;
END;
正确效果:当a表中插入以下2条数据
(‘101’,‘苹果’,‘1’,‘pg001’)
(‘102’,‘香蕉’,‘1’,‘xj001’)
用触发器实现,
c表中自动插入2条记录
(‘101’,‘苹果’,‘水果’,‘优质水果’)
(‘102’,‘香蕉’,‘水果’,‘优质水果’)
实际效果:c表中没有插入数据。
请大神指点秘笈!