时间:2023-10-31来源:系统城装机大师作者:佚名
oracle数据库中id自增的方法:首先创建一个sequence序列
1 2 3 4 5 6 |
CREATE SEQUENCE xxx_SEQUENCE --创建一个序列 INCREMENT BY 1 --每次增加1 START WITH 1 --开始值为 1 NOMAXvalue --不设置最大值,即最大值 NOCYCLE --不循环 NOCACHE --没有缓存限制 |
然后给相应要自增的数据库表 添加一个触发器,每次插入前ID自增1.
1 2 3 4 5 |
CREATE OR REPLACE TRIGGER xxx_TRIGGER BEFORE --创建一个触发器 insert ON xxx FOR EACH ROW --在xxx表开始插入前 每一行 begin --开始执行 select xxx_SEQUENCE.nextval into :New.ID from dual; --执行插入语句前先给id列插入一个序列的next end ; |
这样当插入 insert into xxx () values('')时,不需要给id列插值,id列会自动生成排序。
插入uuid也类似,给相应表添加触发器即可:
1 2 3 4 5 6 7 8 |
CREATE OR REPLACE TRIGGER QLF_QL_CFDJ_TRIGGER BEFORE INSERT ON QLF_QL_CFDJ FOR EACH ROW DECLARE BEGIN IF :NEW.ID IS NULL THEN :NEW.ID:=SYS_GUID(); END IF; END QLF_QL_CFDJ_TRIGGER; --最后一个end 最好和第二个end放在一行,不然有可能报错 |
oracle中自动生成id的函数 :sys_guid()
1 | SELECT sys_guid() FROM aTable a ; |
注意:上面这个是可以自动生成id,但是很多时候自动生成的id会出现乱码
原因:SYS_GUID 以16位RAW类型值形式返回一个全局唯一的标识符,而我们一般用的是十六进制的字符
所有用以下的解决方式:
1 2 3 4 5 6 7 8 9 |
-- 用大写或者小写函数都能解决 : 因为大小写会把raw串自动转换为十六进制 select lower (sys_guid()) from aTable a; -- 或者 select upper (sys_guid()) from aTable a; -- 个人推荐这种:因为它不把值转换成大小写 -- rawtohex函数: 将raw串转换为十六进制 select rawtohex(sys_guid()) from aTable a; -- 还有 select lower (rawtohex(sys_guid())) from aTable a; |
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31