码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 12C -- 基于sequence的列的默认值

时间:2015-08-11 12:12:14      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

12C支持先创建一个sequence,然后再将该sequence指定为某个列的值的默认表达式。

 

和"identity column"具有以下不同点:

·对列的个数没有限制

·sequence必须在列定义之前定义

·如果删除了sequence,会导致后面的insert报错

·表的owner,和使用者对该sequence必须有select权限

·可以手动插入、更新该列(不使用sequence产生的值)

 

SQL> drop sequence test_seq;
SQL> create sequence test_seq start with 1;
SQL> drop table sequence_test_tab;
SQL> create table sequence_test_tab(id number default test_seq.nextval);
SQL> insert into sequence_test_tab values(null);
SQL> insert into sequence_test_tab values(null);
SQL> insert into sequence_test_tab values(default);
SQL> insert into sequence_test_tab values(default);
SQL> insert into sequence_test_tab values(10000);
SQL> commit;

--结果显示可以插入null、字面值,而不使用sequence的值。插入default值的时候就使用sequence的值。
SQL> select * from sequence_test_tab;

        ID
----------


         1
         2
     10000

SQL> select count(*) from sequence_test_tab;

  COUNT(*)
----------
         5

SQL> 

--插入数据时,如果没有指定该列,也会使用sequence的值来默认插入
alter table sequence_test_tab add (col_2 number);
insert into sequence_test_tab(col_2) values(99);
SQL> select * from sequence_test_tab;

        ID      COL_2
---------- ----------


         1
         2
     10000
         3         99

6 rows selected.

SQL> 

 

Oracle 12C -- 基于sequence的列的默认值

标签:

原文地址:http://www.cnblogs.com/abclife/p/4720467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!