Oracle 12C -- 基于sequence的列的默认值
2015-08-11 11:19 abce 阅读(2226) 评论(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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)