首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

临时表与实业表的操作(存在主键则更新,不存在则新增)

2013-07-25 
临时表与实体表的操作(存在主键则更新,不存在则新增)TbCard 表结构如下,CardCode和CardNum为主键。 CardCod

临时表与实体表的操作(存在主键则更新,不存在则新增)
TbCard 表结构如下,CardCode和CardNum为主键。
 CardCode             varchar(10)          not null default '',
 CardNum              varchar(10)          not null default '',
 OtherInfo1           varchar(10)          not null default '',
 OtherInfo2            varchar(10)          not null default '',


同时,我建一个相同结构的临时表#Temp_TbCard

我要实现这样的功能,把临时表中的数据保存到TbCard中,如果临时表中的CardCode和CardNum在tbCard中存在,则更新 OtherInfo1和 OtherInfo2.

否则如果临时表中的CardCode和 CardNum在tbCard中不存在,则插入该行数据到TbCard。
[解决办法]
这是merge函数的典型的用法
[解决办法]
TbCard 表结构如下,CardCode和CardNum为主键。
一个表中不能同时存在两个主键的....
如果临时表中的CardCode和CardNum在tbCard中存在,可以通过pl/sql 中if控制语句来实现,进行 OtherInfo1和 OtherInfo2的更新。由于没有你的表,如果只能给你提供下个人的思路。如果需要后续的处理,把
表的结构发给我。我给你处理下。
[解决办法]
这个语法应该绝大部分数据库都支持,你可以测一下,oracle有没有类似merge的写法就只有你自己去研究了

update?TbCard
set?OtherInfo1=t.CardCode?,OtherInfo2=t.CardNum
from?TbCard?inner?join?#Temp_TbCard?t?on?TbCard.CardCode=t.CardCode
and?TbCard.CardNum=t.CardNum
?
?
insert?into?TbCard
select?*
from?#Temp_TbCard?a
where?not?exists?(select?1?from?TbCard?b?where?a.CardCode=b.CardCode?and?a.CardNum=b.CardNum)

[解决办法]
一个表中不能同时存在两个主键的...


+1

热点排行