PL SQL触发器将表插入插入另一个表时

时间:2016-03-19 10:57:49

标签: oracle

我附上两张表我需要一个触发器,当插入do_chd表同时插入do_chd_hist表而DO_MST表插入DO_MST_HIST TABLE

create table do_mst
 ( fdo_no varchar2(14) not null,
 fdo_date date not null,
 code_db varchar2(11),
 db_name varchar2(25),
 code_sdb varchar2(11),
 sdb_name varchar2(25),
 code_sst varchar2(11),
 sst_name varchar2(25),
 constraint fdo_no_pk primary key(fdo_no)
 );

create table do_mst_hist
 ( fdo_no varchar2(14) not null,
 fdo_date date not null,
 code_db varchar2(11),
 db_name varchar2(25),
 code_sdb varchar2(11),
 sdb_name varchar2(25),
 code_sst varchar2(11),
 sst_name varchar2(25),
 constraint fdo_no_pk primary key(fdo_no)
 );

create table do_chd
 ( fdo_no varchar2(14) not null,
 itemcode varchar2(11) not null,
 name varchar(27) not null,
 unit_price varchar2(11),
 req_qty number(11) not null,
 total_price number(14),
 unit varchar2(7),
 constraint fdo_no_fk foreign key(fdo_no)
 references do_mst(fdo_no)
 );

create table do_chd_hist
 ( fdo_no varchar2(14) not null,
 itemcode varchar2(11) not null,
 name varchar(27) not null,
 unit_price varchar2(11),
 req_qty number(11) not null,
 total_price number(14),
 unit varchar2(7),
 constraint fdo_no_fk foreign key(fdo_no)
 references do_mst(fdo_no)
 );

有人可以帮我写这个触发器吗?

1 个答案:

答案 0 :(得分:0)

虽然我同意评论中的内容,但我认为没有理由在编写创建触发器语法时三思而后行,我很高兴向您展示解决方案你的问题:

CREATE OR REPLACE TRIGGER do_chd_insert_trg
  AFTER INSERT do_chd
  FOR EACH ROW
DECLARE
    sal_diff number;
BEGIN
    insert into do_chd_hist
    values (new.fdo_no, new.itemcode, new.name, new.unit_price, new.req_try, new.total_price, new.unit);
END;
/

在更改可尊重的列名后,您可以使用此语法生成第二个表的触发器。 您可以在此处阅读有关oracle触发器语法的更多信息 https://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm