2011-06-09 67 views
2

我有一個Oracle表格,其中包含以下關鍵字:ID,名稱,DoB,部門& FileNo。 ID字段是具有自動增量值的主鍵。如何根據自動遞增值編寫Oracle觸發器?

我希望寫一個觸發器,這樣,當添加了姓名,出生日期&系一排,FileNo在現場應該得到的價值爲yyyy/XXXX,其中「YYYY」是一個預定義的字符串&「XXXX」是ID字段中的值。

我該怎麼做?

+0

也許你需要一個簡單的視圖或物化視圖

create sequence seq_file_id start with 1 increment by 1; 

和觸發器。 – 2011-06-09 05:44:18

回答

1

你需要一個序列來實現的自動遞增值:上表

CREATE TRIGGER file_trg 
    BEFORE insert 
    ON file_table 
    FOR EACH ROW 
BEGIN 
     SELECT seq_file_id.NEXTVAL INTO :new.id FROM dual; 
     :NEW.fileno := 'yyyy' || :new.id; 

END; 
/
+0

我將你標記爲已接受,因爲你給了我完整的代碼。 – 2011-06-09 15:29:38

3

如果它總是帶有一些前綴的ID,那麼它可能不應該是一列。如果這是默認值,那麼設置:new.fileno := 'string'||:new.id的觸發器就足夠了。

Oracle沒有自動增量,所以你可能意味着一個序列。如果你有一個觸發器填充,那麼這可以在相同的觸發器中。