如果想在Oracle資料庫裡實現資料表主鍵自增,我們似乎沒有辦法像MySql般直接定義列的屬性來實現。不過對於這個資料庫的常用功能,我們還是有辦法實現的。這裡將展示使用觸發器來實現主鍵自增。 1.準備
建立UserInfo表,結構如下:
CREATE TABLE UserInfo( id NUMBER(10) NOT NULL, username VARCHAR2(15) NOT NULL, password VARCHAR2(15) NOT NULL, CONSTRAINTS PF_UserInfo PRIMARY KEY(id) --建立主鍵約束);
建立一個用於自增的序列(requence)
CREATE SEQUENCE Tab_UserInfo_SequenceSTART WITH 1MINVALUE 1MAXVALUE 999999999INCREMENT BY 1CACHE 20;
2.觸發器
CREATE OR REPLACE TRIGGER Tig_UserInfo_InsertBEFORE INSERT ON UserInfo --插入動作觸發器FOR EACH ROW WHEN(new.id IS NULL) --id值為null時觸發BEGIN select Tab_UserInfo_Sequence.nextval into :new.id from dual; --插入序列值到id值END;
3.測試案例
INSERT INTO UserInfo(username, password) VALUES('aaa', '111');INSERT INTO UserInfo(username, password) VALUES('bbb', '222');INSERT INTO UserInfo(username, password) VALUES('ccc', '333');
查看錶資料,結果如下:
4.END
至此,使用觸發器設定主鍵自增已完成。