设为首页 收藏本站
查看: 759|回复: 0

[经验分享] oracle 主键产生方法

[复制链接]

尚未签到

发表于 2016-7-20 02:09:47 | 显示全部楼层 |阅读模式
  涉及到信息系统,构建的数据模型中必定涉及主键,如何产生主键呢?
  (1)不可取:获取字段的最大值加1。设计主键字段为number类型的,每次录入取得的最大值作为新记录的标示。
  改良方法(可取):在数据库中构建序列,然后插入数据时候执行序列即可。如:
  Create Sequence SequenceNum --建序列
Increment By 1   --增加为1
Start With 1     --开始为1
Maxvalue 99999999 --最大
  录入时候可以采取:insert into a(x)values(SequenceNum.nextval),这样就不会重复了。
  同理:上面序列可以采取其他方法写,这个只是最大值加1的方法。
  这样不可取的原因是:如果同时多人使用系统,所有人同时获得了目前主键id的最大值为2,那么同时录入的id将为3,那么会导致冲突问题。
  (2)不可取:利用rowid作为主键。
  不可取原因:因为rowid是伪列,是记录的实际存储空间的标示,如果将数据进行迁移等rowid会发生变化,那么与之关联的其他表中对应数据准确性无法保证。
  (3)最好不用:sys_guid()系统给的函数。
  最好不用的原因:SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。对于SYS_GUID而言,性能上的影响在查询时间和创建时间上(在表格里要创建更多的块和索引以容纳数据)SYS_GUID生成的值的另一个显著的不足之处是,管理这些值会变得困难得多。你必须(手动)输入它们或者通过脚本来填充它们,或者将它们作为Web参数来传递。出于这些原因,将SYS_GUID作为一个主关键字不是一个很好主意,除非是在一个并行的环境里或者希望避免使用管理序列生成器的情况下。
  (4)可取:dbms_random方法。
  select dbms_random.string('a',10) from dual,采用10位的字符来表示,这样重复几率很低。
  insert into a(x) values('dbms_random.string('a',10)')
  (5)自己写产生随机数的函数,这个方法最好,但是选择好合适的算法显得尤为重要。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-246466-1-1.html 上篇帖子: ORACLE创建主键自增表 下篇帖子: oracle笔记_系统特权
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表