如何IDNumber
为此示例输出添加 SQL:
1300000001,1300000002,1300000003,13......
前两位数字必须是当前年份的最后两位数字,而后 8 位数字idnumber
必须是自动编号或序列号,例如00000001,00000002,00000003,00000004..
因为它将作为学生表的主键..
tnx的帮助..
如何IDNumber
为此示例输出添加 SQL:
1300000001,1300000002,1300000003,13......
前两位数字必须是当前年份的最后两位数字,而后 8 位数字idnumber
必须是自动编号或序列号,例如00000001,00000002,00000003,00000004..
因为它将作为学生表的主键..
tnx的帮助..
这是我生成 ID 的方式:
CREATE OR REPLACE TRIGGER GEN_ID BEFORE INSERT ON DEMO FOR EACH ROW
DECLARE
TEMP_ID VARCHAR(10);
HIGHEST_NUM NUMBER;
N NUMBER;
NUM_OF_DIGITS NUMBER;
BEGIN
SELECT NVL(MAX(EMPNO),0)+1 INTO HIGHEST_NUM FROM DEMO;
N:=HIGHEST_NUM;
NUM_OF_DIGITS :=0;
WHILE N!=0
LOOP
NUM_OF_DIGITS := NUM_OF_DIGITS + 1;
N := TRUNC(N/10);
END LOOP;
TEMP_ID :='P';
FOR I IN 1..(5-NUM_OF_DIGITS-1)
LOOP
TEMP_ID:=TEMP_ID||0;
END LOOP;
TEMP_ID := TEMP_ID||HIGHEST_NUM;
:NEW.EMPNO := TEMP_ID;
END;
/
使用这个逻辑我有一个角色,所以我使用连接。这可能是一种方式。我在 Oracle 中厌倦了这个,不确定 C#。
这就是逻辑。
您需要生成一个序列,其中当前值取决于前一个ID
对吗?所以,
第一步是获取最后使用的 id 值。这可以使用 MAX(column) 然后将最大数字加一,这是您想要的序列号,即 1,2,3....等等。
第 2 步:得到数字后,计算数字中存在的位数
第 3 步:您必须生成一个 10 位数字,前 2 位数字将是 2014 年 12 月 13 日,具体取决于年份。因此,您需要获取当前年份的最后 2 位数字。
第四步:加上10-2[as 2 digits of year]——序列最大值的位数,存储为id。
第 5 步:将最大值与 id 连接起来。