oracle中實現自增id
阿新 • • 發佈:2018-06-25
acl pac primary 但是 數據庫 AR not select 簡單 PRIMARY KEY(ID)
)
TABLESPACE MYDB;
--創建自增ID,名稱為:表名_字段名_SEQ
CREATE SEQUENCE sTUDENT_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
-- 為Insert操作創建觸發器,無需在SQL語句裏寫NEXTVAL,名稱為表名_INS_TRG
CREATE OR REPLACE TRIGGER sTUDENT_INS_TRG BEFORE INSERT ON STUDENT FOR EACH ROW WHEN(NEW.ID IS NULL)
BEGIN
SELECT STUDENT_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
在一些數據庫(例如mysql)中,實現自增id只要在建表的時候指定一下即可,
但是在oracle中要借助sequence來實現自增id,
要用上自增id,有幾種方式:
1.直接在insert語句中使用sequence的nextval。
2.在建表時為字段設置default,這種方式我還沒測試。
3.使用觸發器,關於觸發器的方式,從別人那得到了一個示例,暫且先貼到這裏作為備忘。我覺得如果default方式如果可用的話,會比使用觸發器的方式簡單。
以下是觸發器方式相關的代碼:
CREATE TABLE STUDENT
(
ID INT NOT NULL,
NAME VARCHAR2(4000) NOT NULL,
)
TABLESPACE MYDB;
--創建自增ID,名稱為:表名_字段名_SEQ
CREATE SEQUENCE sTUDENT_ID_SEQ MINVALUE 1 NOMAXVALUE INCREMENT BY 1 START WITH 1 NOCACHE;
-- 為Insert操作創建觸發器,無需在SQL語句裏寫NEXTVAL,名稱為表名_INS_TRG
CREATE OR REPLACE TRIGGER sTUDENT_INS_TRG BEFORE INSERT ON STUDENT FOR EACH ROW WHEN(NEW.ID IS NULL)
BEGIN
END;
未完待續
oracle中實現自增id