数据库表的设计用 自增长int类型字段做主键,插入数据时怎么保证这条记录在表中是唯一的呢

如题所述

像SQLserver这像的数据库是有自增字段的,实现原理SQLserver并没有公布的,但也比较容易猜到实现方式:
1.新建一张表,记录不同表需要自增的字段,同时记录自增字段的最大值,以便下次分配值时,用最大值加1进行赋值。
2.在成功分配一个自增字段值后,同时更新这个表中的对应记录的最大值,来保证下次分配时永远是最大值+1,也就达到了不重复。
注:用这种自定义实现的自增字段有好处,但也要慎重。
优点:如果项目需要迁移数据库平台的话(如从SQLServer迁移到Oracle),就不用考虑自增字段的问题了。
缺点:需要解决程序的并发问题,就是同时请求主键,会分配相同的情况。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-02
自增长,即自动增长,该列不允许插入数据,根据用户设置的自增长方案进行增长,当然不存在重复,当然能保证记录是表中唯一的
如果其他列需要保证唯一,可以新建约束:
alter table 表名 add constraint 约束名 unique(不希望重复的列名)
ps:这个不希望重复的列,可以是一列也可以是多列合并追问

如这张表:

主键是Id,但是“楼盘号”、“楼栋号”、“单元号”、“房号”唯一确定一个房屋,Id的值虽不同,但是插入的房屋是相同的,怎么避免这种情况呢

追答

alter table 表名 add constraint 约束名 unique(楼盘号,楼栋号,单元号,房号)

本回答被提问者采纳
第2个回答  2013-04-02
既然是主键,就已经规定这列是唯一的了啊
相似回答