網頁

2020/5/15

Oracle 11g 新增資料ID自動增量 auto increment sequence id when insert

在Oracle 11g新增資料時利用SEQUENCE自動產生遞增ID的方法如下。

建立一個資料表MY_LOG

MY_LOG

CREATE TABLE MY_LOG  (
    ID NUMBER(18) NOT NULL,
    CUST_ID NUMBER(18) NOT NULL,
    STATUS NUMBER(1) DEFAULT 0 NOT NULL,
    PRIMARY KEY (ID)
);

建立自動增量SEQUENCE如下。

MY_LOG_ID_SEQ

CREATE SEQUENCE MY_LOG_ID_SEQ START WITH 1 INCREMENT BY 1;

因為希望執行INSERT語法新增資料時能利用SEQUENCE產生遞增ID,因此建立下面的TRIGGER來使每次執行新增語法時會觸發MY_LOG_ID_SEQ來遞增ID。

MY_LOG_SEQ_TRIGGER

CREATE TRIGGER MY_LOG_SEQ_TRIGGER 
BEFORE INSERT ON MY_LOG FOR EACH ROW
BEGIN
    SELECT MY_LOG_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
END;

設定完以上後使用下面SQL新增資料

INSERT INTO MY_LOG (CUST_ID, STATUS) VALUES (5, 3);
INSERT INTO MY_LOG (CUST_ID, STATUS) VALUES (6, 7);

則可以看到新增每筆資料ID會自動遞增。

+----+---------+--------+
| ID | CUST_ID | STATUS |
+----+---------+--------+
|  1 |       5 |      3 |
|  2 |       6 |      7 |
+----+---------+--------+

沒有留言:

張貼留言