平常寫慣了MSSQL的T-SQL語法,
偶爾換到Oracle時老是會打結-.-
T-SQL裡有個很好用的形態叫做identity,
只要將欄位設定成identity後
新增資料時就會自動幫你填入資料的流水號,
但是在Oracle裡並沒有這樣的形態可以指定,
所以來簡單紀錄一下到底怎麼做才能有auto increment的功能~
1. 首先要先創建一個Sequence,就是一個流水號
CREATE SEQUENCE Seq_Sequence;
--最簡單的創建方式,沒有做其他特殊的設定
--SELECT Seq_Sequence.NEXTVAL FROM DUAL
--選擇該SEQUENCE的下筆流水號出來
2. 建立Trigger,讓你的資料在新增時可以自動插入該SEQUENCE的號碼
CREATE OR REPLACE TRIGGER TriggerName --TraggerName請自行修正
BEFORE INSERT ON TableName --TableName當然是指定欄位的Table
FOR EACH ROW
BEGIN
IF :new.SRNO IS NULL THEN --SRNO就是流水號的欄位名稱啦
SELECT Seq_Sequence.nextval INTO :new.SRNO FROM dual;
END IF;
END;
接下來新增資料時就有跟identity一樣的效果啦~
需要注意的是要設定為流水號的欄位,
該欄位請記得不要指定預設值(default value),
我蠢爆去指定了1,
結果每次都出來是1.... Orz
refference:
1. http://fanqiang.chinaunix.net/a2/b2/20010514/10150052_b.html
2. http://proxy.gtn.com.tw/forum/index.php?topic=25.0
3. http://www.techonthenet.com/oracle/sequences.php 有些比較細的文件可以看
沒有留言:
張貼留言