日期:2014-05-16  浏览次数:20762 次

oracle中怎么实现从一张表插入另张表并比较表中的数据是否一致,一致就不导入
我现在要实现在oracle中,有一张表(表1)中有数据(id,name),另张表(表2)和表1数据结构一样但多一个字段type(0:无变化 1:增加 2:删除 3:修改),从表一将数据导入到表2中,我现在要根据表1的数据和表2中的数据进行比较,如果存在一样的就不导入并将type改为0,name不一样并且id一样说明是修改的将type改为3,name和id都不存在说明是增加的,改为1,原先导入一个值再次导入如果数据不存在说明删除了改为2。 帮帮忙啊!要用到触发器的! 随便问问oracle中的:new.字段名到底能不取到最新插入的值。该怎么使用啊?有源码更好啊!

------解决方案--------------------
SQL code

create or replace trigger trg_sample
     on tableName after insert
for each row

begin
--:new 可以取到最新的值
 insert into table1(id,name) values(:new.id,:new.name);
end;

------解决方案--------------------
用case语句不行吗?
------解决方案--------------------
数据库什么版本? 可以考虑使用merge into
------解决方案--------------------
merge into 表2
using 表1 
on(表2.id=表2.id)
when matched then
update 
set 表2.xxx=表1.xxx
when not matched then
insert 
values(表1.xx,表1.xxx)
------解决方案--------------------
探讨
merge into 表2
using 表1
on(表2.id=表2.id)
when matched then
update
set 表2.xxx=表1.xxx
when not matched then
insert
values(表1.xx,表1.xxx)

------解决方案--------------------
oracle10g中有merge合并两张表
------解决方案--------------------
使用merge最佳,详见不久前我的一篇回帖。
http://topic.csdn.net/u/20100608/14/1b3cccd2-5ae2-4266-b52f-d841df7e7125.html

------解决方案--------------------
merge into不好用,not matched包括修改和删除两种情况,无法赋予TYPE字段正确的值。
------解决方案--------------------
Merge的说