1、往往我们要修改数据库后台表是都需要咸犴孜稍先把原来执行前的数据进行备份操作,如下:例如修改总账辅助核算后台表,备份-修改供应商辅助核算;create ta芟鲠阻缒ble ncdata.gl_freevalue_bak_20181214 asselect * from ncdata.gl_freevalue where freevalueid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助核算commit;create table ncdata.gl_docfree1_bak_20181214 asselect * from ncdata.gl_docfree1 where assid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助项目commit;
2、对脚本1备份进行说明,创建执行前的备份表create table 命名为:表名称_bak_20181214 as 后是查询原数据的脚本,要使用唯一主键进行过滤。
3、执行-修改供应商辅助核算;update ncdata.gl_freevalue 衡痕贤伎set TYPEVALUE1='0001Z0100000000005CV0001H210000003TCM5M1' where freevalueid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助核算commit;update ncdata.gl_docfree1 set F4='0001H210000003TCM5M1' where assid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助项目commit;
4、对脚本2执行进行说明,update 或者delete 编写对应的查询语句,注意where 要和备份where 一致(where freevalueid in('1001H21000000349PM2I','1001H210000003D1N71U')),不然备份之外的怕误执行了。
5、回滚-修改供应商辅助核算;up蟠校盯昂date ncdata.gl_freevalue set TYPEVALUE1=(select TYPEVALUE1 from ncdata.gl_docfree1_bak_20181214 where freevalueid in('1001H21000000349PM2I','1001H210000003D1N71U') )where freevalueid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助核算commit;update ncdata.gl_docfree1 set F4=(select F4 from ncdata.gl_docfree1_bak_20181214 where assid in('1001H21000000349PM2I','1001H210000003D1N71U') )where assid in('1001H21000000349PM2I','1001H210000003D1N71U');--辅助项目commit;
6、对应执行脚本2数据还没处理成功或问题为解决,要及时对脚本2进行回滚编写脚本3并进行说明,把update的从备份表找到并再次更新,这里set 更新字段=(查询到备份表里的值 where条件)后再where 条件;set F4=(select F4 from ncdata.gl_docfree1_bak_20181214 where assid in('1001H21000000349PM2I','1001H210000003D1N71U') )where assid in('1001H21000000349PM2I','1001H210000003D1N71U')