如何使用oracle中的触发器从另外两个表中插入一个表中的数据
Posted
技术标签:
【中文标题】如何使用oracle中的触发器从另外两个表中插入一个表中的数据【英文标题】:How to insert data in one table from another two tables using triggers in oracle 【发布时间】:2015-10-07 06:01:29 【问题描述】:当数据插入另外两个表(即 table_1 和 table_2 )时,我一直试图在表中动态插入数据,比如 admin 。我只能为一个表而不是多个表获得所需的输出。我如何通过在 oracle 中使用触发器来实现这一点?
【问题讨论】:
创建两个触发器,一个在 table_1 上,另一个在 table_2 上。 并应用相同的逻辑,只是表名会不同 您能否澄清您的问题,因为您只想在两个基础表中同时插入相同数据时插入 ADMIN 表? 【参考方案1】:您需要创建两个单独的INSERT 触发器,一个在table_1
上,另一个在table_2
上,以将数据插入admin
表中。
触发器 1:
CREATE OR REPLACE TRIGGER table_1_after_insert
AFTER INSERT
ON table_1
FOR EACH ROW
BEGIN
-- Insert record into admin table
INSERT INTO admin
( column1,
column2,
column3,
column4,
column5 )
VALUES
( :new.column1,
:new.column2,
:new.column3,
:new.column4,
:new.column5 );
END;
/
触发器 2:
CREATE OR REPLACE TRIGGER table_2_after_insert
AFTER INSERT
ON table_2
FOR EACH ROW
BEGIN
-- Insert record into admin table
INSERT INTO admin
( column1,
column2,
column3,
column4,
column5 )
VALUES
( :new.column1,
:new.column2,
:new.column3,
:new.column4,
:new.column5 );
END;
/
【讨论】:
【参考方案2】:按照 lalit 的建议在 2 个表上创建 2 个触发器
CREATE or replace TRIGGER TRG_TAB1
BEFORE INSERT ON tab1...
... insert into admin (name) values (:new.name)
在另一张桌子上
CREATE or replace TRIGGER TRG_TAB2
BEFORE INSERT ON tab2...
... insert into admin (name) values (:new.name)
【讨论】:
我猜表名应该不一样?? OP 想要它的另一种方式,在 table_1 和 table_2 上触发以将数据插入到管理员中。 @Moudiznew.name
将失败,新的应引用为 :new
。以上是关于如何使用oracle中的触发器从另外两个表中插入一个表中的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL 中对触发器进行语法化,以便在插入后从同一个表中更新列(oracle 数据库)
java 如何通过接口把远程Oracle表中的数据同步到Mysql