我创建了下表,并希望每当有一行添加到数据库时都会自动增加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)
);
答案 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的建议。