在oracle sql中使用字符串前缀自动递增ID?

时间:2013-04-20 08:42:26

标签: sql database oracle

我创建了下表,并希望每当有一行添加到数据库时都会自动增加userID。但是我想将ID格式化为000001,例如如下所示,因为有几个表,并且为每个ID提供一个字符串前缀是理想的:

userID
----------
user000001
user000002
user000003


CREATE TABLE UserTable (
userID VARCHAR(20),
username VARCHAR(250) NOT NULL,
firstName VARCHAR(250) NOT NULL,
lastName VARCHAR(250) NOT NULL,
CONSTRAINT pkUserID
    PRIMARY KEY (userID),
CONSTRAINT uniUsername
    UNIQUE (username)
);

2 个答案:

答案 0 :(得分:4)

您必须使用触发器和序列的组合,如下面的代码所示:

CREATE SEQUENCE CREATE SEQUENCE usertable_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
/

CREATE OR REPLACE TRIGGER usertable_trigger  
BEFORE INSERT ON UserTable
FOR EACH ROW

BEGIN
  SELECT 'user' || to_char(usertable_seq.NEXTVAL, '000099')
  INTO   :new.userID
  FROM   dual;
END;
/

答案 1 :(得分:2)

前缀user绝对没有意义,因为它附加到每个ID。删除它并仅使用ID NUMBER。另外,请遵循Jugal的建议。

相关问题