zoukankan      html  css  js  c++  java
  • Oracle12c:支持通过创建identity columen来实现创建自增列

    oracle12c之前如果需要创建自增列必须要通过sequence+trigger来实现。但是oracle12c已经可以像mysql,sqlserver一样通过identity column来设置自增列了。

     1 Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 
     2 Connected as My@TEST
     3 
     4 SQL> 
     5 SQL> create table tab_test2
     6   2  (
     7   3      id number(38) generated as identity (start with 1 increment by 1),
     8   4      name varchar2(30),
     9   5      constraint PK_tab_test2 primary key (id)
    10   6  );
    11 Table created
    12 
    13 SQL> insert into tab_test2(name)values('hello');
    14 1 row inserted
    15 
    16 SQL> select * from tab_test2;
    17                                      ID NAME
    18 --------------------------------------- ------------------------------
    19                                       1 hello
    20 
    21 SQL> insert into tab_test2(name)values('hello2');
    22 1 row inserted
    23 
    24 SQL> insert into tab_test2(name)values('hello3');
    25 1 row inserted
    26 
    27 SQL> select * from tab_test2;
    28                                      ID NAME
    29 --------------------------------------- ------------------------------
    30                                       1 hello
    31                                       2 hello2
    32                                       3 hello3
    33 
    34 SQL> drop table tab_test2;
    35 Table dropped

    当然也支持12c之前的版本所采用的方案:sequence+trigger的方案

     1 SQL> 
     2 SQL> create table t_test (id number,name varchar2(100));
     3 Table created
     4 SQL> create sequence t_test_sequence
     5   2  increment by 1
     6   3  minvalue 1
     7   4  nomaxvalue
     8   5  start with 1
     9   6  cache 20
    10   7  order;
    11 Sequence created
    12 SQL> create or replace trigger t_test_id
    13   2  before insert on t_test
    14   3  for each row
    15   4  begin
    16   5  select t_test_sequence.nextval into :new.id from dual;
    17   6  end;
    18   7  /
    19 Trigger created
    20 SQL> insert into t_test(name) values('hello1');
    21 1 row inserted
    22 SQL> insert into t_test(name) values('hello2');
    23 1 row inserted
    24 SQL> insert into t_test(name) values('hello3');
    25 1 row inserted
    26 
    27 SQL> select * from t_test;
    28         ID NAME
    29 ---------- --------------------------------------------------------------------------------
    30          1 hello1
    31          2 hello2
    32          3 hello3
    33 
    34 SQL> drop table t_test;
    35 Table dropped
    36 
    37 SQL> 

    查阅文档:

    http://www.xifenfei.com/2015/03/oracle-12c-%E6%96%B0%E7%89%B9%E6%80%A7identity-columns-%E5%AE%9E%E7%8E%B0oracle%E8%87%AA%E5%A2%9E%E9%95%BF%E5%88%97%E5%8A%9F%E8%83%BD.html

  • 相关阅读:
    Apache 配置 HTTPS访问
    Symfony——如何使用Assetic实现资源管理
    跟我一起学wpf(1)-布局
    wpf图片定点缩放
    Chapter 3 Shared Assemblies and Strongly Named Assemblies
    [JavaScript]父子窗口间参数传递
    [HASH]MOD运算用户哈希函数
    [Linux]返回被阻塞的信号集
    [Linux]信号集和sigprocmask信号屏蔽函数
    [Linux]不可重入函数
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/7009854.html
Copyright © 2011-2022 走看看