暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

12C 自增列

原创 章芋文 2013-09-16
589

12C中支持创建自动增长的字段(GENERATED BY DEFAULT ON NULL AS IDENTITY),类似mysql中的自增列,
下面是简单测试:
[code]SQL> CREATE TABLE t1 (c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
2 c2 VARCHAR2(10));

Table created.

SQL> INSERT INTO t1(c2) VALUES ('abc');

1 row created.

SQL> INSERT INTO t1 (c1, c2) VALUES (null, 'xyz');

1 row created.

SQL> SELECT c1, c2 FROM t1;

C1 C2
---------- ----------
1 abc
2 xyz

SQL> insert into t1 values(4,'zyw');

1 row created.

SQL> SELECT c1, c2 FROM t1;

C1 C2
---------- ----------
1 abc
2 xyz
4 zyw

SQL> INSERT INTO t1(c2) VALUES ('abc');

1 row created.

SQL> SELECT c1, c2 FROM t1;

C1 C2
---------- ----------
1 abc
2 xyz
4 zyw
3 abc

SQL> INSERT INTO t1(c2) VALUES ('abc');

1 row created.

SQL> SELECT c1, c2 FROM t1;

C1 C2
---------- ----------
1 abc
2 xyz
4 zyw
3 abc
4 abc[/code]
另外还可以使用使用SEQUENCE当DEFAULT值达到自增列的效果,及ON NULL属性
[code]SQL> CREATE SEQUENCE default_seq;

Sequence created.

SQL> CREATE SEQUENCE default_on_null_seq;

Sequence created.

SQL> CREATE TABLE t2 (
2 col1 NUMBER DEFAULT default_seq.NEXTVAL,
3 col2 NUMBER DEFAULT ON NULL default_on_null_seq.NEXTVAL,
4 description VARCHAR2(30)
5 );

Table created.

SQL> INSERT INTO t2 (description) VALUES ('DESCRIPTION only');
INSERT INTO t2 (col1, col2, description) VALUES (999, 999, '999,999,DESCRIPTION');
INSERT INTO t2 (col1, col2, description) VALUES (NULL, NULL, 'NULL,NULL,DESCRIPTION');
1 row created.

SQL>
1 row created.

SQL>

1 row created.

SQL> commit;

Commit complete.

SQL> SELECT * FROM t2;

COL1 COL2 DESCRIPTION
---------- ---------- ------------------------------
1 1 DESCRIPTION only
999 999 999,999,DESCRIPTION
2 NULL,NULL,DESCRIPTION[/code]
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论