扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
主键表 - T表 '100W'数据同步到T1表(同步:TRUNCATE/DELETE或IMPDP...等方式[手动改数据])
成都创新互联主营黄山网站建设的网络公司,主营网站建设方案,成都App制作,黄山h5小程序制作搭建,黄山网站营销推广欢迎黄山等地区企业咨询
例如: T表对应SEQ_T.NEXTVAL= 100W;
T1表对应SEQ_T.NEXTVAL= 10W;
TRUNCATE TABLE T1;
INSERT TABLE T1 SELECT * FROM T;
数据同步但T1表对应SEQ_T.NEXTVAL= 10W序列不变;
此时T1调用序列INSERT到T1表时就会报错 ( ORA-00001 : 违反唯一约束条件 (LOTTERY.PK_T1))
(若批量同步很多表就可能会引起很多表序列需要更新成主键最大值+ 1才能保证不报错
(可以用把源库的SEQUENCE同步过来①或者如下存储解决② ))
在oracle中,可以这样做:
1、建立一个存储过程proc_reset_seq负责将SEQUENCE重置,即drop再建立SEQUENCE;记得存储过程不能带任何参数。
2、再用有SYS.DBA_JOBS权限的用户执行:
declare v_jobname NUMBER;
sys.DBMS_JOB.SUBMIT(v_jobname,'proc_reset_seq;',TRUNC(SYSDATE + 1,'DD'),'TRUNC(SYSDATE+1,''DD'') ');
可以做到,对结果再一次分组呗,用分析函数,你这个第一行其实没有什么用,就是记录相同的第二列值是数以第几个,
select zaawdm ,
row_number() over(partition by zaawdm order by zaawdm ASC) XH
from table_name
这样就可以了,你的表列的名字起得太不规范了,看着都难受。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流