温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

oracle数据库id自增及生成uuid问题怎么解决

发布时间:2023-05-04 15:13:15 来源:亿速云 阅读:137 作者:iii 栏目:开发技术

这篇“oracle数据库id自增及生成uuid问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“oracle数据库id自增及生成uuid问题怎么解决”文章吧。

oracle数据库id自增及生成uuid

oracle数据库中id自增的方法:首先创建一个sequence序列

CREATE SEQUENCE   xxx_SEQUENCE --创建一个序列
INCREMENT BY 1 --每次增加1
START WITH 1 --开始值为 1
NOMAXvalue --不设置最大值,即最大值
NOCYCLE --不循环
NOCACHE --没有缓存限制

然后给相应要自增的数据库表 添加一个触发器,每次插入前ID自增1.

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也类似,给相应表添加触发器即可:

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的函数以及注意事项

oracle中自动生成id的函数 :sys_guid()

SELECT sys_guid() FROM aTable a ;

注意:上面这个是可以自动生成id,但是很多时候自动生成的id会出现乱码

原因:SYS_GUID 以16位RAW类型值形式返回一个全局唯一的标识符,而我们一般用的是十六进制的字符

所有用以下的解决方式:

-- 用大写或者小写函数都能解决 : 因为大小写会把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;

以上就是关于“oracle数据库id自增及生成uuid问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI