love wife & love life —Roger的Oracle&MySQL技术博客

Phone:18180207355 提供专业Oracle&MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

Oracle 12c学习系列之—identity column

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger的Oracle&MySQL技术博客

本文链接地址: Oracle 12c学习系列之—identity column

在12c之前,如果想实现column的自动增长,通常是通过sequence来实现,然而这个问题在12c中得到了解决,Oracle推迟了identity column功能,该功能完美的解决了之前的问题,下面是我的简单测试,供参考!

可以看到id列默认可以进行自动增长,在12c之前,Oracle只能通过sequence来实现这个功能。 另外我们还可以看到,这种情况下,是不能插入null值的。

那么对于identity 的column,真的不能插入null值吗? 其实是可以的,不过你得这样做:

不过比较奇怪的是,大家看到了,插入的第3条数据的id列为null的情况下,oracle自己实际的值为1. 这个1是怎么来的呢 ?后面会告诉你答案。

这种情况下,可以进行正常的dml,因为identity column默认是为null的,下面继续一个测试。

我们可以看到,居然不能进行update,这里想想也应该知道,Oracle是不会允许你进行update的。

最后通过表的定义,我们可以看到,ID列默认被定义为了sequence,从属性来看跟我们之前版本中创建sequence的属性差不多。而且我们看到默认情况下start with 为1。这个也就是为什么前面插入null的情况下id=1的原因。

Leave a Reply

You must be logged in to post a comment.