我想在Oracle中使用字母数字自动增量ID。我在这里阅读了其中一篇文章并将其应用于此。但我只得到数字身份证。
我希望我的LAWYERID格式为LAWYER0000001,LAWYER0000002等等。
//my table is:
SQL> CREATE TABLE "LAWYERS"
( "LAWYERID" VARCHAR2(4000),
"NAME" VARCHAR2(4000),
"EXPERTISE" VARCHAR2(4000),
"MOBILE" VARCHAR2(4000),
"EMAIL" VARCHAR2(4000),
"FEES" VARCHAR2(4000),
"PASSWORD" VARCHAR2(4000),
"VERIFIED" VARCHAR2(4000),
"TEMP_ID" VARCHAR2(4000),
CONSTRAINT "LAWYERS_PK" PRIMARY KEY ("LAWYERID") ENABLE
) ;
以下是我为表名律师创建的触发器:
SQL> CREATE OR REPLACE TRIGGER "LAWYERS_TRIG"
BEFORE INSERT ON lawyers
FOR EACH ROW
BEGIN
SELECT lawyers_sequ1.NEXTVAL
INTO :new.lawyerid
FROM dual;
END;
这是序列:
SQL> CREATE SEQUENCE "LAWYERS_SEQU1" MINVALUE 1 MAXVALUE
9999999999999999999999999999 INCREMENT BY 1 START WITH 21 CACHE 20 NOORDER
NOCYCLE ;
答案 0 :(得分:2)
使用
'LAWYER'||TO_CHAR(lawyers_sequ1.NEXTVAL,'FM0000000')
答案 1 :(得分:-3)
您可以在查询中使用此功能。
SELECT 'LAWYER'+ REPLACE(STR(LAWYERID, 7), SPACE(1), '0') FROM LAWYERS
通常,在表格中,自动增量系统是数字的。你也可以为此编写触发器。它看起来像这样。
DECLARE @INTNEWID INT
DECLARE @LASTID VARCHAR(13)
DECLARE @NEWID VARCHAR(13)
SET @LASTID=( SELECT TOP 1 LAWYERID
FROM LAWYERS ORDER BY LAWYERID DESC)
SET @INTLASTID=CONVERT(INT,SUBSTRING(@LASTID,0,6))+1
SET @NEWID ='LAWYER'+ REPLACE(STR(CONVERT(VARCHAR,@INTNEWID),7),SPACE(1), '0')
UPDATE LAWYERS SET LAWYERID=@NEWID WHERE LAWYERID=(SELECT TOP 1 LAWYERID FROM INSERTED)