Oracle-11g

oracle中的序列號

  • December 10, 2014

我正在使用 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;

但是當然,您可以自由地在自己的儲存過程中獲取下一個值並從那裡插入它;如果您使用上述觸發器,如果已經提供了一個值,它將不會從序列中獲取另一個值。


請注意,雖然序列中的數字保證是唯一的——除非你重新設置序列,否則你不會兩次得到相同的數字——它們不能保證是密集的——編號中的間隙可能而且將會發生。

引用自:https://dba.stackexchange.com/questions/84788