日期:2014-05-18  浏览次数:20678 次

关于数据库记录的ID号,大家是怎么处理的?
一般就是使用一个顺序增长的类型记录ID,但这样产生了一个问题:当我更换数据库后,记录的ID值就全变了,于ID相关的记录就会出现错误。

比如:
有两条记录A和B,A记录由数据库自动产生的ID是100,B记录的一个字段记录的A记录的ID是100,但我现在把A记录复制到另一个数据库后,A记录的ID成了150,而B记录的字段里,A记录的ID还是100,这样就出错了

大家在设计数据库时,是怎么处理这个问题的?

------解决方案--------------------
数据库设计不好,以后的工作越来越难做..
------解决方案--------------------
谁叫你们公司不重视DBA ^_^

通常使用数字自增效率最好,用程序也可以做到,不一定要依赖数据库。

数据库有两种极端的用法:
1.它就是一个数据容器,什么都不管,就只是存放数据和共享数据。
2.反第1种,非常复杂严格的,并且数据安全提高,所有数据操作都用存储过程 自定义事务等等来处理,程序不能直接访问到数据。

第二种需要一个好的DBA,对性能要求高的,或者有集群 分布式数据库,光靠程序会累死几个人。
------解决方案--------------------
自增的

如ejb3的表id

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

就实现自增了 很简单
------解决方案--------------------
用HIBERNATE的UUID
------解决方案--------------------
你导库的时候要把自增属性去掉,导完数据以后再加上,以前数据的id是不能变的。
------解决方案--------------------
楼上的办法可行.
------解决方案--------------------
路过
------解决方案--------------------
基本没有用过数据库的自增和ID,都是程序控制生成表主键12位时间值+13位随机数
------解决方案--------------------
设置一个和业务完全无关的ID,就不怕破坏数据的完整性了.
------解决方案--------------------
你导库的时候要把自增属性去掉,导完数据以后再加上,以前数据的id是不能变的
佩服!!!