如果想用sequence 當PK ,就得先建立一個sequence 物件
-- 建立一個sequence, 可指定每次加1,自動加1,最小值以及最大值
create sequence {TheNameForSequence} start with 1 increment by 1 MINVALUE 1 MAXVALUE 99999999;
-- 建立TABLE { target_table }
(略,不過請把要抓取sequence 的欄位datatype設為NUMBER,可以不限定長度)
-- 新增一筆資料進入這個TABLE 使用上述 sequence:
insert into target_table (PK_column, column2, column3) values ( {TheNameForSequence}.nextval, "column2.value", "column3.value" );
-- 可以查詢目前 sequence 幾多號
SQL> show sequence {TheNameForSequence} ;
-- 其他參數
CACHE 20 (預設值)
NOORDER (預設值)
NOCYCLE (預設值)
NOORDER or ORDER 不能跟 NOCACHE 一起用
-- sequence 的好處
可以讓oracle 自動幫你找到一個unique的KEY (如果你完全只使用預設參數的話,絕對可以抓到唯一的sequence,除非.....用完了 >___< )
-- 最末
PK 要用 sequence 還是 varchar2,個人認為應該是要看你的PK有沒有可能需要手動編碼OR需要被修改,如果都不需要修改的話,sequence 當PK是可以的。
-- reference
http://www.oracle.com/technology/products/rdb/pdf/0307_sequences.pdf
-- 建立一個sequence, 可指定每次加1,自動加1,最小值以及最大值
create sequence {TheNameForSequence} start with 1 increment by 1 MINVALUE 1 MAXVALUE 99999999;
-- 建立TABLE { target_table }
(略,不過請把要抓取sequence 的欄位datatype設為NUMBER,可以不限定長度)
-- 新增一筆資料進入這個TABLE 使用上述 sequence:
insert into target_table (PK_column, column2, column3) values ( {TheNameForSequence}.nextval, "column2.value", "column3.value" );
-- 可以查詢目前 sequence 幾多號
SQL> show sequence {TheNameForSequence} ;
-- 其他參數
CACHE 20 (預設值)
NOORDER (預設值)
NOCYCLE (預設值)
NOORDER or ORDER 不能跟 NOCACHE 一起用
-- sequence 的好處
可以讓oracle 自動幫你找到一個unique的KEY (如果你完全只使用預設參數的話,絕對可以抓到唯一的sequence,除非.....用完了 >___< )
-- 最末
PK 要用 sequence 還是 varchar2,個人認為應該是要看你的PK有沒有可能需要手動編碼OR需要被修改,如果都不需要修改的話,sequence 當PK是可以的。
-- reference
http://www.oracle.com/technology/products/rdb/pdf/0307_sequences.pdf
留言