1

我创建了下表,并且希望在数据库中添加一行时让用户 ID 自动递增。但是,我希望将 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)
);
4

2 回答 2

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;
/
于 2013-04-20T08:49:11.657 回答
2

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

于 2013-04-20T08:50:15.193 回答