最近在工作中遇到一个问题,面对一个有上百万数据的表如何给他添加主键,有这种问题的往往是在业务初期建表是忘记了设置主键,等到系统在正式库上跑了一段时间之后,表中添加了大量的数据,这个时候想要给表添加主键时就会遇到这个问题,
面对这个问题我们可以借助oracle中的序列,代码如下:
update tablename d
set d.f_id = to_char(sysdate,'yyyymmdd') || lpad(sequence_name.Nextval,8,'0');
'8'和'0'代表我新建的序列是8位,如果不够8位用'0'填充