是否可以在 Oracle 中创建用于将 table 的数据插入另一个 table 的触发器?

Is it possible to create a trigger for inserting data of a table on another table in Oracle?

我正在学习 Oracle,我有一个查询,如果像标题中所说的那样,请创建一个触发器,将数据从一个 table 插入另一个 table。我该怎么做?如果我有这个 tables:

create table personal(
    id_person);

create table mine(
    id_mine,
    name_mine,
    pay);

create table trip(
    id_trip,
    id_person,
    name_mine,
    date_trip);

create table assignment(
    id_assig,
    id_trip,
    pay);

pay列tableassignment 是我想通过触发器从 table mine 自动插入的列。

然后你可以使用定义在table 我的 如下:

CREATE OR REPLACE TRIGGER trg_bi_ins_mine
BEFORE INSERT ON mine
FOR EACH ROW 
DECLARE
  v_assigID assignment.id_assig%type := seq_assig.nextval;
  v_tripID  assignment.id_trip%type  := seq_trip.nextval;
BEGIN         
    insert into assignment( id_assig, id_trip, pay)
    values( v_assigID, v_tripID, :new.pay);
 -- this pay in (:new.pay) comes from inserted column value of the table "mine"
END;

我假设您的 table 上的主键是 IDENTITY 列。

为了将 pay 的值从 table mine 插入 table assignment,您需要知道 id_trip。这可以从 name_mine 的值中得到,但我想知道这个值是否是唯一的? return 是 id_trip 的单个值还是 return 多个值? date_trip 是否以某种方式参与其中?这些都是您需要知道答案才能正确编写此触发器的所有问题。尽管如此,这里是:

CREATE OR REPLACE TRIGGER ins_mine_pay
 AFTER INSERT ON mine
   FOR EACH ROW
BEGIN
  INSERT INTO assigment
    ( id_trip, pay )
  SELECT id_trip, :new.pay
    FROM trip
   WHERE mine_name = :new.mine_name;
END;
/

希望对您有所帮助。