oracle数据库id自增及生成uuid问题

 更新时间:2023年05月04日 14:31:49   作者:nihao561  
这篇文章主要介绍了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备份恢复的具体方法

    oracle备份恢复的具体方法

    这篇文章介绍了oracle备份恢复的具体方法,有需要的朋友可以参考一下
    2013-10-10
  • Oracle集群 diagwait的问题记录

    Oracle集群 diagwait的问题记录

    这篇文章主要给大家介绍了关于Oracle集群diagwait的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • oracle使用sql语句增加字段示例(sql删除字段语句)

    oracle使用sql语句增加字段示例(sql删除字段语句)

    oracle使用sql语句增加修改删除字段示例
    2013-12-12
  • oracle如何合并多个sys_refcursor详解

    oracle如何合并多个sys_refcursor详解

    这篇文章主要给大家介绍了关于oracle如何合并多个sys_refcursor的相关资料,以及在文末跟大家分享了sys_refcursor 和 cursor 优缺点的比较,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起学习学习吧
    2018-05-05
  • Oracle查看表空间使用率以及爆满解决方案详解

    Oracle查看表空间使用率以及爆满解决方案详解

    在日常的oralce使用中最长遇到的问题就是oralce的表空间满了,数据无法写入报错,下面这篇文章主要给大家介绍了关于Oracle查看表空间使用率以及爆满解决的相关资料,需要的朋友可以参考下
    2022-07-07
  • Oracle11g简单安装和使用教程

    Oracle11g简单安装和使用教程

    这篇文章主要为大家详细介绍了Oracle11g简单安装和使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 详解Oracle块修改跟踪功能

    详解Oracle块修改跟踪功能

    块修改跟踪功能是指使用二进制文件记录数据库中数据库更改的过程。这篇文章主要介绍了Oracle块修改跟踪功能,需要的朋友可以参考下
    2021-11-11
  • Oracle中分析函数over()的用法及说明

    Oracle中分析函数over()的用法及说明

    这篇文章主要介绍了Oracle中分析函数over()的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Oracle实例启动时报错:ORA-32004的解决方法

    Oracle实例启动时报错:ORA-32004的解决方法

    最近在启动实例时遇到了一些错误,通过查找的相关的资料终于解决,决定分享出来给有需要的朋友们,所以下面这篇文章主要给大家介绍了在Oracle实例启动时报错:ORA-32004的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • 完美卸载Oracle数据库

    完美卸载Oracle数据库

    如果Oracle卸载不干净就会导致下次安装失败,这篇文章主要为大家详细介绍了Oracle完美卸载的全部过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论