说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在ORACLE开发中,如何备份一条记录?即除了主键被修改外,其他数据都原封不动的备份过来。

编辑:说三道四文库 发布时间:2017-12-16 05:29
HTML文档下载 WORD文档下载 PDF文档下载
如果在我的DB中存在一个表Table1:No,Name,Age,Address是它的Field,其中No是主键。现在Table1中有一条数据为:
         No           Name   Age  Address
         001          张三   25  沈阳市和平区文化路115号
此时我需要对这条数据进行变更,但是需要保留原始数据,以备后用。于是我需要把这条数据的主键进行更改,这样表中就有了两条数据:
         No           Name   Age    Address
         001          张三   25     沈阳市和平区文化路115号
         001_BACK     张三   25     沈阳市和平区文化路115号

追加方法我只找到了一种,即在Insert 语句中改变了主键No的值,其它的各Field值直接在Insert语句中通过Select取得,但是这种方法有一个弊端,因为在相关的Select语句中必须把所有的字段都写出来。这样一来比较麻烦,最重要的是由于目前有两套系统共用一套DB,某些字段对于某个系统是不用的,更有可能根据需要以后还会追加字段,这样以前的系统都要重新修改
    高手帮帮忙,还有没有其它的方法?

通常你好备份数据需要放到另一个表中,这样就不会造成混乱.
1.建立Table1_backup

2.建立trigger , 当update Table1 时, insert old record to Table1_backup .

如果你不这样做,你的数据库会变得一团糟:-)
通常我不需要备份这样的数据,只在极特殊的情况下需要备份(而且是手动操作的,并不是有更新就需要备份,这是出于特殊情况考虑的,与通常意义上的数据库备份是不一样的),所以就直接备份在同一个表里了(而且不是由我决定的)。此外,即使备份到另一个表中,数据在备份后又要如何恢复呢?这又回到了如何在表中插入一条与已有数据几乎完全一样的数据(除主键外)的问题。
一、通常我不需要备份这样的数据,只在极特殊的情况下需要备份(而且是手动操作的,并不是有更新就需要备份,这是出于特殊情况考虑的,与通常意义上的数据库备份是不一样的)???????:没有说新建一个表就是通常意义的备份!!如果你是手工备份的话,那就没有必要修改程序了,你什么都不需要作了!!

二、即使备份到另一个表中,数据在备份后又要如何恢复呢?这又回到了如何在表中插入一条与已有数据几乎完全一样的数据(除主键外)的问题????????:怎么说一样呢?如果几乎一样,备份就没有意义了,既然备份了,就肯定可以恢复,
delete table1 where no='001';
insert into table1 select * from table1_bak where no='001';
建一个view

create or replace back_view
select no||'_BACK' as no_back , other_column, ....
from yourtable;

insert into yourtable (select * from back_view where no_back='001_BACK');
请各位老大在帮我提供解决方案时,不要偏离一个主题:原数据和备份数据一定要在一个表里,而且已经在一个表里了。所以备份到另一个表不是我要问的问题,也不能靠建立视图来进行备份,不要批判我的做法,不要管它合不合理,就单纯的解决这个问题sql语句应该怎么写?现在表里已经有这样的数据了:
         No           Name   Age    Address
         001          张三   25     沈阳市和平区文化路115号
         001_BACK     张三   25     沈阳市和平区文化路115号

现在我要恢复数据了,先删除“001”的数据,然后用insert into table1 (select '001',Name,Age,Address from table1 where No='001_BACK'),这样就可以把备份的数据恢复了。但是必须写出所有的字段Name,Age,Address,如果一个表里的字段非常非常多的话,就很麻烦。特别是当数据库的结构没有完全定下来的时候。如果没有主键的话,就好办了。insert into table1 (select * from table1 where No='001_BACK'),不需要具体的知道有些什么字段。有没有什么方法,能够修改主键还不需要具体的知道所有字段的,如第二个语句,就很好,偏偏需要修改主键才能插入(只要有一个字段需要改变的话,就需要写出所有其它的字段)。
最后再提醒一句:一定要在同一个表里

借助创建临时表:
Step 1
 delete from table1 where no='001';
Step 2
 create temp_table as select * from table1 where no='001_BACK';
Step 3
 update table1 set no='001' where no='001_BACK';
Step 4
 insert into table1 ( select * from temp_table where no='001_BACK'); 
 -- 也可以不用 where 条件
Step 5
 drop temp_table;

这样就可以不用关心表中除主键外的其他字段了,Step1-5可以封装在匿名块之中执行。
step1 : rename tableaa to tabletmp;
step2 : create table tableaa as select * from tabletmp;
step3 : update tableaa set field=field||'_bak';
step4 : insert into tableaa select * from tabletmp;
step5 : drop table tabletmp;
加速软件交付 企业级模拟测试服务CA LISA受追捧 盛大云业务重点转向自服务 转战中小型企业:Prediction API请求一个月内飙升至7亿多次 利用光子 耶鲁大学研究人员让量子计算机离现实更近一步 技术为王的云计算会让IT部门消亡么? 从Discuz到APP:安米移动社区转化工具 覆盖全领域:Google、Facebook、Twitter等大师的最佳推荐 苹果CEO宣布更改保修政策 并向中国用户道歉 拒绝使用现有Web组件的6个愚蠢理由 Github宣布支持SVN方式访问 iPad,正在改变什么? Go Mobile:行业大牛谈行业应用开发 亚马逊Cloud Drive新增文件同步功能 对抗Dropbox 35万奖金发放,BlackBerry 10大赛奖项揭晓 超越Google Apps:排行榜前10的相关云应用 荣耀终将消散 全球第一台千万亿次级超级计算机退役 谷歌已推免费Android和iPhone版Quickoffice,微软你呢? 用于响应式设计的9个CSS技巧 微软Surface Pro正式登陆中国市场 售价6588元起 岳雷:Windows Server 2012虚拟化性能提升巨大 陈健:Windows Server 2012让企业轻松管理IT 智能手机:革命已经波及到阴间 兄贵草泥马:重口味单机移动游戏为什么能火? 最炫HTML5框架Famo.us 将免费面向开发者 MySQL到NoSQL:数据的重思和查询方式的转换 程序员心髓:移动应用API设计10大技巧 Netflix公布个性化和推荐系统架构,3种类型作业通实时 从SendCloud到搜狐云 扎克伯格的败笔?Facebook Home可能无家可归 走进eico design,仰视设计师 乔布斯顾问承认苹果的命名糟透了 各位大侠江湖救急啊!关于域的问题 请问有谁写过从DBF文件读出表结构的程序吗? 系统文件u8888.dll错误,发现无法识别版本系统,要求插入cd ,怎么回事啊? 申请游戏开发版块斑竹 我想问个排序的问题。 使用“文件”对话框,另存时 大家帮忙——————在线等待!!! 鼠标单击文本框内容,怎样取得其在文本框中的位置?? 用c++编写家电超市物流管理系统 有那位帅哥可以帮帮忙吗??谢谢~嘻~`~~~ 谁有英文版的FLASH和DREAMWEAVER!! 那里有C#的电子书下载呀 新手提问,关于SQL数据库的连接代码 在unix下的ftp问题 一个简单的问题 jbuilder中的Tools->Configure Servers的对话框中没有JBoss 3.X,如何是好? SqlServer数据库的备份问题 在线求助ReportBulider如何做这样的报表? 怎样得到用户表名? 大家好帮忙啊 ——————在线等待!! 直接访问操作符"." 和间接访问操作符"->" 有什么区别 数据库优化的问题 一个文本框,有一个验证控件(判断是否为数字),还有一个textchanged事件,这是一个矛盾的东西,让我头疼~~ interface中的uses语句和implemetation中的uses语句有何不同? XP个人单机服务器配置后访问需要帐号密码,怎么办 干得不开心,想转行,大家给点建议 如何实现“让用户自定义快捷键?” 怎么样把.aspx制作成安装的文件?? 我写了如下一个方法,但是用起来有问题,帮我看看!! 俺倒~~~~~~~~`怎么能上三星啊? 向高手求救:如何得到一张表的行数和列数!! 散分!代码解读! 使用sybase时的提示The query and the views in it exceed the limit of 16 tables. 有办法解决吗? 如何将数组的内容添加到一个文件的末尾 怎样才能打开一个489K的.DAT文件? 列表框(ClistCtrl)如何得到选中项的文本内容和选中项的索引值 为什么我登录到Oracle Management Server时老出错。(oracle 9i) 这样的sql语句怎么写呢?急啊!(还可以加分) pb中截取字符串的问题:急,在线等待 急,在VC++.Net中怎样将字符串System::String类型转换为LPSTR类型? 用PQ把NTFS转换成FAT32时,文件名全变名问号了,怎么办?!!!!!!!!!! 又是回车符的问题,急!!!!! 关于工具栏的问题 控件的DragMode为dmAutomatic,不能用鼠标点? 奇怪的电脑时钟 系统不支持本地交互式登陆 ListView的小问题 有责任感的中国人(水均益:我来谈京沪高速铁路 ),顶者有分!200分 如何给MDI窗口设置背景图? 如何使数据按我定义的顺序显示出来 请教,我有一个toolbar,上面有四个toolbutton,问题! 关于按钮的小问题 爱拍一朵鲜花多少钱 爱拍鲜花一朵鲜花得多少钱? 有个汽车后挡风玻璃上贴了个大写英文字母P是什么意思? 玻璃配置5+12A+4+9A+5Low-E是什么意思?具体字母的含义 什么花既代表亲情又代表友情? Idon't know which hat was his 和 Idon't know which hat his was哪个对? 补全对话 A:Wow,() a beautiful dress it is B Do you know what it’s.( ) of A I补全对话A:Wow,() a beautiful dress it is B Do you know what it’s.( ) of A I think it’s()of silk.It’s not a common dress .It’s() a cheongsam. 小贝坐旅游列车出去游玩,列车以每分钟600米的速度要过第一,第二个隧道,已知过第二个隧道比第一个隧道多用5秒,第二个隧道长度是第一个隧道长度的2倍少50米,你能求出各隧道的长度吗 求just a fantasy 中文发音.请理解,是这样的!意思是 "HOLLE" 中文发音成"哈喽" " see you tromrrow" 中文发音成"谁又偷猫肉"要整首歌的歌词 中文发音。I know I can hide from myself this time now I know I 've got to f wind 7 请问前面的那个字母怎么念啊 翻译:雁陈惊寒,兴尽悲来,渔舟唱晚,出自《滕王阁序》 日本一男子弑母弃尸 藏尸冰箱月余终败日国会议员山本太郎向天皇递交书信 或韩国防部:暂不签署《韩日军事情报保护韩资料称日反韩示威3年激增10倍 口美华裔留学生派对后公寓猝死 疑酒精中日本“菜鸟”教师多:不会点火柴不敢拿纽约遭飓风袭击一周年 数千灾民仍无家法国两男子晚间持械抢劫 得价值70万泰辣椒酱工厂被指呛辣气味扰居民在美遭荷兰博物馆展出139幅珍贵油画 作品法一抢劫犯落网 曾为iPod及8欧元深化配电改革,升级售电模式,加快能源联创工场再度荣膺国家高新技术企业认证章丘一村民酒后辱骂邻居被对方捅死!双你强任你强 双色球就这么“狂”有种放刘长乐:中国反腐大戏是世界需要的中国男子花17万买下奔驰才知是13手 连G60高速两货车追尾2人被卡驾驶室,起征点37年未变,委员张抗抗再吁稿酬台湾“立法院”直播频道没人看 收视率蒋友柏曾批蒋介石铜像 蔡正元:你不爽2017年度居民养老保险开缴,3月2神奇的圣古世界帝皇演义抗战之召唤猛将无限之罪恶皇冠万古神途丧变篮球之王者荣耀续南明崇祯有家店我的青春恋爱物语同人俄国教父美丽华商场旅游六福村主题乐园旅游垛田风光带旅游永庆寺旅游燕子洞旅游立法会大楼旅游夺翠楼旅游洪泽湖浴场旅游拜都拉清真寺旅游秦腔博物馆旅游望乡台瀑布旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘