我已经创建了下表,并且我希望只要有一行添加到数据库中,用户 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)
);
最佳答案
您必须使用触发器和序列的组合,如下面的代码所示:
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;
/
关于sql - 在 oracle sql 中自动增加一个带有字符串前缀的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118398/