Oracle-11g
oracle中的序列號
我正在使用 Oracle 11g。
我有一個像這樣的場景:
我需要像下面一樣增加自動增量ID
00000001 00000002 00000003 00000004
例如,我的表格如下所示
id empid name 薩爾 000001 10 拉朱 5555 000002 20 拉梅什 6666 000003 30 拉胡爾 55555
現在,如果我在該表中插入一條記錄,則 id 需要自動增加。
如何在儲存過程中實現這一點?我在儲存過程中有一個插入語句。
這通常是通過在插入之前使用序列來實現的,通常與為每一行觸發的觸發器結合使用。
CREATE SEQUENCE my_seq; CREATE OR REPLACE TRIGGER trg_my_table_bir BEFORE INSERT ON MyTable FOR EACH ROW BEGIN IF :new.my_id IS NULL THEN :new.my_id := my_seq.NEXTVAL; END IF; END;
但是當然,您可以自由地在自己的儲存過程中獲取下一個值並從那裡插入它;如果您使用上述觸發器,如果已經提供了一個值,它將不會從序列中獲取另一個值。
請注意,雖然序列中的數字保證是唯一的——除非你重新設置序列,否則你不會兩次得到相同的數字——它們不能保證是密集的——編號中的間隙可能而且將會發生。