oracle数据库的主键格式

时间:2012-03-19 01:17:45

标签: sql oracle plsql sequence

我想对主键使用字母数字格式,即A1 A2 A3,并自动增加。

我该怎么做?它甚至可以推荐吗?

1 个答案:

答案 0 :(得分:6)

您需要创建一个SEQUENCE:

CREATE SEQUENCE your_seq
  MINVALUE 1
  MAXVALUE 999999999999999999999999999
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

然后,您使用:

INSERT INTO your_table
  (pk_column, ...)
SELECT 'A' || your_seq.NEXTVAL ...

如果您希望增加字母数字值,请创建另一个序列&使用CHR function

SELECT CHR(alpha_seq.NEXTVAL) || your_seq.NEXTVAL ...

但我的建议是将此列作为代理键,并使用实际主键列的序列值:

INSERT INTO your_table
  (pk_column, surrogate_key, ...)
SELECT your_seq.NEXTVAL,
       'A' || your_seq.NEXTVAL ...

...因为VARCHAR2将占用比NUMBER更多的字节。它在JOINing表时会有所不同,并允许灵活地更改代理键而不影响参照完整性(IE:B1,B2,B3 ......)。