✨ 哈喽,屏幕前的每一位开发者朋友,你们好呀!✨​

当你点开这篇文章时,或许正对着 IDE 里闪烁的光标发呆,或许刚解决一个卡了三天的 bug,正端着咖啡松口气 —— 不管此刻的你在经历什么,都想先和你说声:“辛苦了,同行者!” 👋​

作为一名摸爬滚打多年的开发工程师,我始终觉得,我们敲出的每一行代码,不仅是业务逻辑的堆叠,更是无数个 “踩坑与爬坑” 的缩影。从第一次上线时的手忙脚乱,到如今能冷静应对突发 bug;从对着文档啃源码的迷茫,到能给新人讲清设计思路 —— 这些藏在键盘敲击声里的成长,太值得被好好梳理和分享了。 📝​

所以,这一系列文章里,不会有太多高深的架构理论,也不会罗列晦涩的技术文档。我想聊的,是那些 “教科书里没写” 的实战细节:​

比如上线前必做的 3 个自查动作(亲测能减少 80% 的线上问题)🛡️;​

比如和产品经理 “友好沟通” 需求的 5 个小技巧(避免反复改需求到崩溃)🤝;​

比如如何用最少的时间,快速定位线上性能瓶颈(曾靠这招拯救过一次紧急故障)🚀;​

再比如那些看似 “浪费时间” 的重构,其实藏着怎样的长期价值…… ♻️​

当然,更想和大家聊聊 “技术之外” 的事:如何平衡加班与生活(毕竟身体是敲代码的本钱)💪,如何在团队中清晰表达自己的想法(别让好方案被沉默埋没)🗣️,甚至是 “35 岁焦虑” 来袭时,我是如何调整心态的…… 🌱​

如果你也和我一样,相信 “经验不是用来炫耀的资本,而是能帮同行少走弯路的路灯”,那不妨坐下来喝杯茶,一起在评论区聊聊:你最近遇到的最大挑战是什么?有没有哪个瞬间,让你觉得 “啊,原来我真的成长了”? 💬​

毕竟,开发这条路从来不是孤军奋战。我们分享的每一个踩坑故事,都可能成为别人的指路牌;你留下的每一条评论,或许也会给我新的启发。 🌟​

那么,准备好了吗?让我们开始这场 “代码背后的成长对话” 吧!接下来的每一篇,都等你来拍砖、补充、共鸣 —— 因为最好的经验,永远在交流里生长。 🌱​

目录

一.查看Oracle版本

二.在建表语句中,设置ID为主键自增

三.向表中插入数据,ID字段不用管

思考:为什么GENERATED BY DEFAULT AS IDENTITY能实现主键自增?


本篇文章只介绍如何在Oracle创建一张表时,设置ID为主键自增

一.查看Oracle版本

Oracle 12c及以上版本提供了非常简洁的SQL方式实现主键自增;

如下图,可见此时Oracle数据库的版本为19c,满足条件。

二.在建表语句中,设置ID为主键自增

--创建【测试表】
CREATE test (
    ID NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    LSH VARCHAR2(50),
    DDH VARCHAR2(50)
);

三.向表中插入数据,ID字段不用管

向test表插入数据时,不插入ID字段,即可实现ID自增:

-- 添加两条测试语句(执行两次)
INSERT INTO test(LSH, DDH)
VALUES ('abc', 'abc')

查看结果:如下图所示,可见此时成功实现了主键自增。

思考:为什么GENERATED BY DEFAULT AS IDENTITY能实现主键自增?

当你使用 GENERATED BY DEFAULT AS IDENTITY 时,Oracle在底层自动创建了一个序列,并把这个序列与列关联起来。

总结工作原理

  1. 语法糖GENERATED AS IDENTITY 是Oracle提供的语法糖

  2. 自动创建序列:Oracle自动创建一个隐藏序列(名称如 ISEQ$$_12345

  3. 绑定关联:将列与序列绑定,设置默认值为 序列.NEXTVAL

  4. 插入时处理:插入时自动判断是否需要调用序列

  5. 统一管理:删除表时会自动清理关联的序列

简单说:Oracle在背后自动完成了以前需要手动做的"创建序列 + 设置默认值 + 触发器保护"的工作,让你用一行SQL搞定!

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐