--建立测试表B_TEST_TABLE,稍后会在本表上增长触发器,在插入本表的同时复制一份数据到B_TEST_TABLE2中 create table B_TEST_TABLE ( c1 VARCHAR2(200), d2 DATE ); --建立B_TEST_TABLE2表,在插入B_TEST_TABLE数据时,复制一份数据到本表中 create table B_TEST_TABLE2 ( c1 VARCHAR2(200), d2 DATE ); --建立存储过程,往B_TEST_TABLE2中插入一条数据 create or replace procedure TestPro(C1 VARCHAR2) is begin INSERT INTO B_TEST_TABLE2 VALUES (C1, SYSDATE); --由于此存储过程是触发器中调用的,因此不能增长提交命令 --COMMIT; end TestPro; --下面这个斜杠不能去掉,不然会致使触发器和存储过程或其余脚本编译在同一个对象中,每一个单独的对象都应用此符号分开(建表等操做除外) / --建立触发器,before insert on b_test_table为在插入b_test_table数据以前触发,能够改为after insert on b_test_table --或者before update on b_test_table等选项 create or replace trigger TEST_TABLE_TRIGGER_INST_BF before insert on b_test_table for each row begin --调用存储过程:new表明的是新的记录对象,能够直接取值或修改该记录的每一列,:new.c1是取新纪录的c1列值,:new.d2是取新纪录的d2列值 TestPro(:new.c1); --若是不想用存储过程也能够直接这样写 --INSERT INTO B_TEST_TABLE2 VALUES (:new.c1, :new.d2); end TEST_TABLE_TRIGGER_INST_BF; / --插入测试数据 insert into B_TEST_TABLE values ('1', sysdate); commit; --查询测试表数据 select * from B_TEST_TABLE; select * from B_TEST_TABLE2;