您的位置:首页 > 数据库 > Oracle

在Oracle中使用自动递增列

2010-03-09 12:33 281 查看
在Oracle中使用自动递增列

Oracle 沒有類似 MS-SQL 可以直接修改欄位屬性,設定成自動編號欄位,所以我們必須透過 Sequence 物件的 nextval 方法,取得其下一個值,然後將此值新增至 TABLE 中,製造出有自動編號的效果。

建立Sequence 物件的語法:
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;

//建立 Table
Create Table MarsTest(
ID_ NUMBER(10,0) NOT NULL,
Content VARCHAR2(250)
);

//建立 Sequence
1.使用預設值
Create Sequence Seq_MarsTest;

2.使用自訂
Create Sequence Seq_MarsTest
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;

调用:
//新增資料
INSERT INTO MarsTest(ID_, Content)
VALUES (Seq_MarsTest.NEXTVAL, 'MarsTest');

從上面的例子,我們也可以發現到,我們是在 INSERT 時,才將 Sequence 與 Table 產生關係,所以 Sequence 不只是提供給特定 Table 使用,也能給其他任一個 Table 共用。

附:
修改序列

ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999999999999999999999999
NOCACHE
NOCYCLE;
規則:
>必須為序列的所有者或者擁有ALTER特權
>修改對於以後的序列號生效
>序列必須是被刪除然後重新產生(使所有相關的對象失效,並且失去相應的關聯)
>修改時還要滿足些其他的驗證條件,比如說新的MAXVALUE不可以比現在的序列號低

刪除序列

DROP SEQUENCE dept_deptid_seq;
>必須要是序列的所有者或者有DROP ANY SEQUENCE的權限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐