有这样一个需求:
1、在一张表A中,有自增长ID字段,需要经常向数据库中插入新数据,也会定期讲数据库中的一些过期数据转移到历史表B中,供查询用
2、相关逻辑要求ID在整个系统唯一
有如下问题。
1、sql server数据库中:
当删除ID最大那行记录后,重新插入新行,新的ID是否有可能重复刚才被删除的哪个数值?
因为之前在my sql的InnoDB引擎时,发生过类似的问题,网络上搜索说的是nnoDB引擎把最大的自增长数值保存在内存中,
不重启服务器,插入新行,不会与之前的重复,但删除后先重启,然后插入一行,那么新行的ID就是刚才被删除那样的ID值,
不知道sql server 会不会出现这样的问题,
2、如果 问题1 的的情况可能会发生,能否使用GUID(即uniqueidentifier类型)来代替自增长字段ID,这样会不会有新的问题产生,
需要注意那些问题
------解决思路----------------------
1、MSSQL 不会重复 之前出现过的自增,除非你自己重置
2、GUID 相较于 ID 你可以认为永远不可能会出现这样的问题,不管啥数据库~~
GUID 应该会使速度稍降,着急兄曾指点过,用NEWSEQUENTIALID() 代替newid()来产生的GUID可以加索引,速度应该可以保证
------解决思路----------------------
1.在sql server中,当ID是自增时,删除ID最大那行记录后,重新插入新行,新的ID不会重复的!ID始终是唯一的;
如果转移到另外一张表时,可以与此表建立另外一个字段来区分,不能用ID来区分了;
2.GUID 可以使用的,但是一般的系统都是采用INT自增列。GUID 一般用在大数据量的处理上。主键用int性能好。GUID是16字节,数据量大时,本身占的空间就多了;
个人拙见,供LZ参考;
------解决思路----------------------
不会重复的。除法你用DBCC CHEINDEN强制设置。或者TRUNCATE 表 才会重复。
------解决思路----------------------
单系统,自动递增id是足够,而且最好
------解决思路----------------------
100%肯定不會重複的.
------解决思路----------------------
在sql server中自增列中数据删除一部分再新增,自增列的数据是不同的。
------解决思路----------------------
我猜他以为你B表也是自增,如果B表不是自增,那就根本没什么问题,因为A不会产生以前产生过的ID
比如A ID 自增到50 ,然后把这50条记录转存到B表,A表的DELETE掉这50条数据,那么A的下个ID还是51~~
------解决思路----------------------
1.在sql server中,当ID是自增时,删除ID最大那行记录后,重新插入新行,新的ID不会重复的!ID始终是唯一的;
如果转移到另外一张表时,可以与此表建立另外一个字段来区分,不能用ID来区分了;
2.GUID 可以使用的,但是一般的系统都是采用INT自增列。GUID 一般用在大数据量的处理上。主键用int性能好。GUID是16字节,数据量大时,本身占的空间就多了;
个人拙见,供LZ参考;
转移到另外一张表,不能用ID来区分是啥意思?
现在我的情况时:1、A、B两表结构一样,唯一差异是A表ID自增,B表不是自增
2、新的记录只会在A产生,B只记录从A转移过来的过期记录
我的 异地数据同步,也是这样实现的,没任何问题
------解决思路----------------------
1.在sql server中,当ID是自增时,删除ID最大那行记录后,重新插入新行,新的ID不会重复的!ID始终是唯一的;
如果转移到另外一张表时,可以与此表建立另外一个字段来区分,不能用ID来区分了;
2.GUID 可以使用的,但是一般的系统都是采用INT自增列。GUID 一般用在大数据量的处理上。主键用int性能好。GUID是16字节,数据量大时,本身占的空间就多了;
个人拙见,供LZ参考;
转移到另外一张表,不能用ID来区分是啥意思?
现在我的情况时:1、A、B两表结构一样,唯一差异是A表ID自增,B表不是自增
2、新的记录只会在A产生,B只记录从A转移过来的过期记录
是滴,如果A、B两表结构一样的,ID都自增,以ID关联区分的话,转移就会出问题!根据你描述的,你这情况不存在这问题;
------解决思路----------------------
1.首先在SQL server自增长ID最大那行记录被删除后,重新插入自增长ID不会出现之前被删除的值
2,用GUID的话肯定不会出现这样的情况,用GUID产生的值占的空间比较多
------解决思路----------------------
1、自增长ID是整型有个上限,如果你的这个表的数据是无止境的,而且增速很快不建议用自增长ID
2、GUID是字符型的,没有上限,但是后续查询会影响速度,可以建索引优化