是否可以在 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;
/
希望对您有所帮助。
我正在学习 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;
/
希望对您有所帮助。