数据清洗小记:主键类ID字段的生成

2015-07-24 08:02:44 · 作者: · 浏览: 0

?

【背景】

在由源端抽取数据插入目标端后,需要创建一个主键ID字段。

?

【解决】

方法一、使用sys_guid()函数生成32位的随记数

例如向emp表中,新建一个字段,并且设置字段默认值为用sys_guid()函数自动生成一个32位不重复的随机数。

alter table EMP add ID varchar2(32) default sys_guid();

?

方法二、使用触发器每插入一条自动递增序列

例如每次向emp1表新插入一条数据之前,先插入一个ID值。其中seq_idadd是事先已经创建的序列,可以自行定义该序列的起始值、方差值等。

create or replace trigger tr_IDADD

before insert on emp1

for each row

begin

select seq_idadd.nextval into :new.id from dual;

end;

?

方法三、拼接

例如某ID主键是通过源端业务字段的拼接形成的,例如:

来源ID号||to_char(sysdate, 'yyyymmdd')||lpad(NEXTNUM.Nextval,10,0)

我们假设来源ID号为12位的话,这样就截取了一个12+8+10=30位的主键编号。

?

【实验】

使用sys_guid获取ID值,如下:

\

通过触发器,每新增一条数据,ID以1递增,如下:

\

?

通过拼接获得主键ID,如下:

\

小知识,简而记之。