问题描述
请问:如何实现Oracle主键自增(网络上有很多例子,很简单),但是我的问题是:如果id为1,2,...10,13,14,...50。(其中id=11,12)被删除了。oracle自增的时候会先用11,12,再用51,52,...吗?谢谢!
解决方案
解决方案二:
不会,谢谢!直接用51,52...往下。
解决方案三:
不会那样,直接51,52,..
解决方案四:
主键应作为一个唯一标识符,并不需要具有业务含义,这才是正道!所以,主键只要唯一,不管当中跳了多少个都是没有问题的。
解决方案五:
主键好比身份证号码,并不会因为一个人的去世,而重编所有人身份证号码的道理一样。
解决方案六:
引用4楼bao110908的回复:
主键好比身份证号码,并不会因为一个人的去世,而重编所有人身份证号码的道理一样。
果果不要用身份证号码来比较,因为天朝的身份证号码曾经从15位变到18位,而作为主键,一般是不能这么变的。主键最好是只读的与业务无关的。
解决方案七:
打个比方嘛,呵呵。15位升18位好比就是从一个Schema导到另一个Schema中去,主键重编,哈哈。
解决方案八:
引用6楼bao110908的回复:
打个比方嘛,呵呵。15位升18位好比就是从一个Schema导到另一个Schema中去,主键重编,哈哈。
哈哈,也是哈。
解决方案:
主键使用中还需要考虑一点:如果今后有可能进行多库多表数据合并,为了避免数据表合并后的主键冲突,那么这些表的主键就不能使用独立的Sequence产生,应改为UUID或者有可能合并的表采用同一个Sequence产生主键,以保证全局唯一性,
解决方案:
产生下一个主键,数据库首先获取最大的主键值,然后+1,所以应用程序在使用自增主键的时候,一方面可能也会长生冲突,另外一个方面速度比较慢,选择uuid一般可以避免上述问题。
解决方案:
哇。真热闹,进来看看,学习了。
时间: 2024-12-29 04:46:47