oracle设置默认值sql,12c 使用sequence作为列默认值

官方文档创建表语句部分说明

在12c中,表支持默认列为sequence值,而且不用使用传统的触发器来实现该功能.

f1426669cd073db24f8ca11e80d63ccd.png

586fefd1d95d5a650ab4da5d7b0a884c.png

12bcf499d15265a61c9aec2d15f4fca3.png

12c创建表使用默认sequence测试过程

SQL> select * from v$version;

BANNER CON_ID

-------------------------------------------------------------------------------- ----------

Oracle Database 12c Enterprise Edition Release 12.1.0.0.2 - 64bit 0

PL/SQL Release 12.1.0.0.2 0

CORE 12.1.0.0.2 0

TNS for Linux: Version 12.1.0.0.2 0

NLSRTL Version 12.1.0.0.2 0

SQL> create table t_xifenfei

2 (

3 id number GENERATED ALWAYS as identity (

4 start with 1

5 increment by 1

6 ),

7 name varchar2(200)

8 );

Table created.

SQL> insert into t_xifenfei(name) values('www.xifenfei.com');

1 row created.

SQL> commit;

Commit complete.

SQL> col name for a30

SQL> select * from t_xifenfei;

ID NAME

---------- ------------------------------

1 www.xifenfei.com

SQL> insert into t_xifenfei(name) values('www.orasos.com');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t_xifenfei;

ID NAME

---------- ------------------------------

1 www.xifenfei.com

2 www.orasos.com

SQL> insert into t_xifenfei values(5,'www.xifenfei.com');

insert into t_xifenfei values(5,'www.xifenfei.com')

*

ERROR at line 1:

ORA-32795: cannot insert into a generated always identity column

SQL> insert into t_xifenfei(name) values('www.xifenfei.com');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t_xifenfei;

ID NAME

---------- ------------------------------

1 www.xifenfei.com

2 www.orasos.com

3 www.xifenfei.com

补充说明

1.如果设置了列默认值为seq,则不能手工插入一个该列值否则报ORA-32795

2.通过10046跟踪该insert语句未发现trigger对应sql语句操作,比传统自己编写触发器效率原则上更加高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值