我的本意是想这样,创建primary key为id的表temp1,创建primary key为id的表temp2,temp2的id外键约束到temp1的id, 然后加入我已经给temp1插入了一条数据,然后给temp2插入id相同的一条数据,但是我希望temp2表中的name值能自动地被赋值为temp1中那个id所在的name值。 于是我这样创建表temp1,temp2,和促发器 temp2_trigger. 但是下面的触发器的语法是错误的,我百思不得其解...
create table temp1
(
id int not null primary key,
name varchar2(20)
);
create table temp2
(
id int not null primary key,
name varchar2(20),
other varchar2(20),
constraint foreign_1 foreign key (id) references temp1(id),
) create or replace trigger temp2_trigger
before insert on temp2
for each row
begin
select temp1.name into :new.name from temp1 where temp1.id=temp2.id
;end temp2_trigger;
/
create table temp1
(
id int not null primary key,
name varchar2(20)
);
create table temp2
(
id int not null primary key,
name varchar2(20),
other varchar2(20),
constraint foreign_1 foreign key (id) references temp1(id),
) create or replace trigger temp2_trigger
before insert on temp2
for each row
begin
select temp1.name into :new.name from temp1 where temp1.id=temp2.id
;end temp2_trigger;
/
after insert on temp2
for each row
begin
update temp2 set name=(select name from temp1 where id=:new.id);
end temp2_trigger;
/
create or replace trigger temp2_trigger
after insert on temp2
for each row
begin
update temp2 set name=(select name from temp1 where id=:new.id) where id=:new.id;
end temp2_trigger;
/
after insert on temp2
for each row
begin
select temp1.name into :new.name from temp1 where temp1.id=:new.id;
end temp2_trigger;
/
create or replace trigger temp2_trigger
before insert on temp2
for each row
declare
v_name varchar2(20);
begin
select name into v_name from temp1 where id=:new.id;
:new.name:=v_name;
end;