oracle两个表之间数据更新怎么实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle两个表之间数据更新怎么实现相关的知识,希望对你有一定的参考价值。
使用ORACLE 11G,现在手里有三张表,A\B表分别为新旧数据表,A表100万条,B表120万条,其中A表和B表有80万条左右的数据UID的值相同。C表为状态表。
A表有uid,name,cost,X四列,B表有uid,name,cost,Y四列。C表有UID,STATUS两列。三张表UID为主键,现在想做以下几件事:
1、对于A\B表相同UID的按照A表uid,name,cost更新B表uid,name,cost,同时将C表相同UID的STATUS设置为U;
2、对于仅在A表UID存在的行,插入B表,同时将C表相同UID的STATUS设置为I;
SQL如何写?
create or replace trigger TRIG_UPDATE_TEST
after insert or delete or update on test
for each row
declare
l_id varchar2(50);
l_name varchar2(50);
l_age number;
l_sal number;
begin
if(deleting or updating) then
delete test01
where id=:old.id;
if(deleting) then
return;
end if;
end if;
l_id:=:new.id;
l_name:=:new.name;
l_age:=:new.age;
l_sal:=:new.sal;
begin
insert into test01(id,name,age,sal) values(l_id,l_name,l_age,l_sal);
end;
end TRIG_UPDATE_TEST;
再简化点就是在触发器中不声明变量,直接用:new.字段代替
哎,没分啊
请采纳。追问
可能是我没说太清楚,我不是要实时更新表,是一次性的做表的更新和插入。UID、name、cost三列数据类型,长度定义都相同。怎么写SQL
参考技术A MERGE INTO本回答被提问者采纳 参考技术B ……数据库都上了oracle怎么同时更新两个表
参考技术A 按顺序更新,然后再commit 就可以了。 参考技术B 两个表关联起来,就可以更新,如:UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE
p.productId = pp.productId
AND p.dateCreated < '2004-01-01'
海枫科技本回答被提问者采纳
以上是关于oracle两个表之间数据更新怎么实现的主要内容,如果未能解决你的问题,请参考以下文章