Oracle中實現自增列的兩種方式(序列、觸發器)
阿新 • • 發佈:2021-05-19
測試表:
CREATE TABLE UserInfo(
id NUMBER(10) NOT NULL,
username VARCHAR2(15) NOT NULL,
CONSTRAINTS PF_UserInfo PRIMARY KEY(Id)
);
方法一:顯示呼叫序列的下一個值插入:
SQL語句:
-- 建立序列
CREATE SEQUENCE Tab_UserInfo_Sequence
START WITH 1
MINVALUE 1
MAXVALUE 999999999
INCREMENT BY 1
CACHE 20;
INSERT INTO USERINFO values(Tab_UserInfo_Sequence. nextval,'aaa');
INSERT INTO USERINFO values(Tab_UserInfo_Sequence.nextval,'bbb');
SELECT * FROM UserInfo;
結果:
方法二:序列+觸發器:
SQL語句:
CREATE SEQUENCE Tab_UserInfo_Sequence
START WITH 1
MINVALUE 1
MAXVALUE 999999999
INCREMENT BY 1
CACHE 20;
DROP TRIGGER Tig_UserInfo_Insert;
CREATE TRIGGER Tig_UserInfo_Insert
BEFORE INSERT
ON UserInfo
FOR EACH ROW
BEGIN
SELECT Tab_UserInfo_Sequence.nextval into :new.id FROM dual;
END;
INSERT INTO UserInfo(username) values('zs');
INSERT INTO UserInfo(username) values('ls');
SELECT * FROM UserInfo;
結果: