在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 |
+----+---------+--------+
沒有留言:
張貼留言