在oracle 把一个 A 表的数据备份到 B 表,如果 A 表和 B 表里面有相同的数据则不备份.

条件是:A.URI!=B.URI可以理解为把A表里的数据转移到B表里,同时把A表里面转移过来的数据删除掉,条件是不能有重复的数据(A.URI!=B.URI),要存储过程写... 条件是: A.URI != B.URI
可以理解为 把A表里的数据转移到B表里,同时把A表里面转移过来的数据删除掉,条件是不能有重复的数据(A.URI != B.URI),要存储过程写的sql语句。

已经解决了,谢谢大家。
展开
 我来答
洋霄我题皮罗2976
2013-05-16 · 超过33用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:71.2万
展开全部
看了上面的回答,基本语句是可以的,但是违反了唯一性约束条件,除了A.URI != B.URI,两张表里的主键是不是有冲突的,如果是的话insert 和 select的时候就把除了有冲突的字段都写上,要一一对应的啊。

还有一种做法:既然是给a表做备份,就直接创建一张新表得了,create table a_bak as select a.* from a,b where a.uri != b.uri; 如果想保留a的所有数据的话就把 a.uri != b.uri的条件去掉
更多追问追答
追问
我这个表的字段有十几个呢。。这个是要定期做的,不是只做一次的,可以这么说是把A表里面的数据转移到B表里,然后把A表里面的数据清掉。
追答
看到错误是因为违反了唯一性约束条件,那个唯一性约束的字段也是要导的数据吗?如果添加了唯一性约束的字段也是要导的那么就应该是修改而不是添加了,还有你功能的逻辑里sql执行多少次和字段的选用有关系?不知道你选用的dao层是什么框架。别说十几个字段了,对于某些数据表,几十个字段的也是存在的。
蝉鸣无声
2013-05-15 · IT,生活,情感,职场人生
蝉鸣无声
采纳数:53 获赞数:96

向TA提问 私信TA
展开全部
insert into B
select a.*
from A, B
where A.URI != B.URI;
commit;
更多追问追答
追问
这样不行啊,会报错的。SQL 错误: ORA-00001: unique constraint (UCSMS.SYS_C0019560) violated
00001. 00000 - "unique constraint (%s.%s) violated"
单独执行select 就有问题。应该用个左连接或者右连接吧。
追答
那你先建立一个临时表再插入B表了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e8abe02
2013-05-15 · 超过14用户采纳过TA的回答
知道答主
回答量:35
采纳率:100%
帮助的人:22.5万
展开全部
insert into tableB select a.* from tableA a where exists(select 1 from tableB b where a.uri<>b.uri)
追问
: ORA-00001: unique。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式