--用trigger实现吧 CREATE OR REPLACE TRIGGER trg_a BEFORE INSERT ON a FOR EACH ROW BEGIN INSERT INTO b VALUES(:NEW.id,:NEW.NAME,:NEW.DATE,sysdate); END;
存储过程实现,没trigger好做,因为你insert是在外面做,不是在procedure中insert ,不然要传参数,很麻烦 --用trigger实现吧,上面少写了个ownerCREATE OR REPLACE TRIGGER trg_a BEFORE INSERT ON a FOR EACH ROW BEGIN INSERT INTO b VALUES(:NEW.id,:NEW.NAME,:NEW.owner,:NEW.DATE,sysdate); END;
问题是你insert语句是在存储过程中插入吗,还是普通的insert语句 如果是在过程中执行insert 那么就好办了撒 如果只是执行insert,要想得到你的要求,那么没办法了,只能创建一个trigger,然后再trigger中调用存储过程,在过程中执行insert into b ... 也就是说不管怎么样,你要创建一个trigger,不然你新插入的数据怎么作参数传到过程中?
用存储过程可以实现目标 但是不能时时插入的 可以加个作业每分钟执行 要么触发器则 --过程 create or replace procedure p1 as begin merge into b using a on(a.id=b.id) when not matched then insert(b.id,b.name,b.owner,b.date) values(a.id,a.name,a.owner,a.date); commit; end;
还是trigger最简单,为什么不建议下你们头用trigger.
补充一下我的数据库是oracle8i的
哦 版本低了 --过程 create or replace procedure p1 as begin insert into b select a.id,a.name,a.owner,a.date from a minus select b.id,b.name,b.owner,b.date from b; commit; end; --insert into b select a.id,a.name,a.owner,a.date from a minus select b.id,b.name,b.owner,b.date from b; --or insert into b select a.id,a.name,a.owner,a.date from a where not exists(select 1 from b where a.id=b.id);
--用trigger实现吧
CREATE OR REPLACE TRIGGER trg_a
BEFORE INSERT ON a
FOR EACH ROW
BEGIN
INSERT INTO b VALUES(:NEW.id,:NEW.NAME,:NEW.DATE,sysdate);
END;
--用trigger实现吧,上面少写了个ownerCREATE OR REPLACE TRIGGER trg_a
BEFORE INSERT ON a
FOR EACH ROW
BEGIN
INSERT INTO b VALUES(:NEW.id,:NEW.NAME,:NEW.owner,:NEW.DATE,sysdate);
END;
啊啊啊啊啊啊,我就知道会有人要用trriger做的,用trriger的话我也知道容易多了,但是上头要求我用存储过程啊555跪求兄弟们帮帮忙了。
如果是在过程中执行insert 那么就好办了撒
如果只是执行insert,要想得到你的要求,那么没办法了,只能创建一个trigger,然后再trigger中调用存储过程,在过程中执行insert into b ...
也就是说不管怎么样,你要创建一个trigger,不然你新插入的数据怎么作参数传到过程中?
要么触发器则
--过程
create or replace procedure p1
as
begin
merge into b using a on(a.id=b.id)
when not matched then
insert(b.id,b.name,b.owner,b.date) values(a.id,a.name,a.owner,a.date);
commit;
end;
补充一下我的数据库是oracle8i的
哦
版本低了
--过程
create or replace procedure p1
as
begin
insert into b select a.id,a.name,a.owner,a.date from a minus select b.id,b.name,b.owner,b.date from b;
commit;
end;
--insert into b select a.id,a.name,a.owner,a.date from a minus select b.id,b.name,b.owner,b.date from b;
--or
insert into b select a.id,a.name,a.owner,a.date from a
where not exists(select 1 from b where a.id=b.id);