oracle数据库id自增及生成uuid问题怎么解决
这篇“oracle数据库id自增及生成uuid问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“oracle数据库id自增及生成uuid问题怎么解决”文章吧。
oracle数据库id自增及生成uuid
oracle数据库中id自增的方法:首先创建一个sequence序列
CREATESEQUENCExxx_SEQUENCE--创建一个序列INCREMENTBY1--每次增加1STARTWITH1--开始值为1NOMAXvalue--不设置最大值,即最大值NOCYCLE--不循环NOCACHE--没有缓存限制
然后给相应要自增的数据库表 添加一个触发器,每次插入前ID自增1.
CREATEORREPLACETRIGGERxxx_TRIGGERBEFORE--创建一个触发器insertONxxxFOREACHROW--在xxx表开始插入前每一行begin--开始执行selectxxx_SEQUENCE.nextvalinto:New.IDfromdual;--执行插入语句前先给id列插入一个序列的nextend;
这样当插入 insert into xxx () values('')时,不需要给id列插值,id列会自动生成排序。
插入uuid也类似,给相应表添加触发器即可:
CREATEORREPLACETRIGGERQLF_QL_CFDJ_TRIGGERBEFOREINSERTONQLF_QL_CFDJFOREACHROWDECLAREBEGINIF:NEW.IDISNULLTHEN:NEW.ID:=SYS_GUID();ENDIF;ENDQLF_QL_CFDJ_TRIGGER;--最后一个end最好和第二个end放在一行,不然有可能报错
oracle中自动生成id的函数以及注意事项
oracle中自动生成id的函数 :sys_guid()
SELECTsys_guid()FROMaTablea;
注意:上面这个是可以自动生成id,但是很多时候自动生成的id会出现乱码
原因:SYS_GUID 以16位RAW类型值形式返回一个全局唯一的标识符,而我们一般用的是十六进制的字符
所有用以下的解决方式:
--用大写或者小写函数都能解决:因为大小写会把raw串自动转换为十六进制selectlower(sys_guid())fromaTablea;--或者selectupper(sys_guid())fromaTablea;--个人推荐这种:因为它不把值转换成大小写--rawtohex函数:将raw串转换为十六进制selectrawtohex(sys_guid())fromaTablea;--还有selectlower(rawtohex(sys_guid()))fromaTablea;
以上就是关于“oracle数据库id自增及生成uuid问题怎么解决”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注主机评测网行业资讯频道。
上一篇:C#怎么实现真正的四舍五入
Oracle数据库
输入法切换键是哪个键?输入法切
冬月是哪一个月?冬月是什么意思
个人所得税退税金额怎么算出来的
输入法全角和半角有什么区别?输
a4纸尺寸是多少厘米?a4纸的由来
个人所得税扣除标准?个人所得税
输入法哪个好用?输入法介绍
卡拉OK是哪个国家发明的?卡拉OK
mikutools原神网页版入口链接?m
关机特别慢什么原因?电脑和手机