十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
根据我自己的经验,oracle的序列是不认自己填写的数字的,所以想要这么操作只能先删除序列才可以。
坚守“ 做人真诚 · 做事靠谱 · 口碑至上 · 高效敬业 ”的价值观,专业网站建设服务10余年为成都橡塑保温小微创业公司专业提供成都企业网站建设营销网站建设商城网站建设手机网站建设小程序网站建设网站改版,从内容策划、视觉设计、底层架构、网页布局、功能开发迭代于一体的高端网站建设服务。
如果是修改的话,要删除序列才能修改,也就是数艘要分三步操作
(1)删除序列(把语句复制下来),可是也要复制触发器的语句(当然重新编译一下触发器也可以,这样会让触发器无效)
(2)修改序号(至于你说的修改为指定区间,这个简单,比如你要把1-20,改为50001-50020,那么就是id+50000即可,只要where中限定范围就可以了。)
(3)重建序列,并重新设定起始值(至少设定为新的最大值+1),别忘了相关触发器
序列本身没办法直接归零,只能是删掉然后重建。删除序列要用到drop语句和建立的create语句都是ddl语句,在存储过程中是没办法应用的。个人建议写成一个sql脚本,然后在操作系统层面设定为每隔一年运行一次。
可以使用update select 语法进行更新
喜欢研究的可以自行学习下,以便积累
不想浪费时间可以看下面:
UPDATE A SET ID = (SELECT ROWNUM FROM A ORDER BY 时间 DESC)
参考语法:
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)