数据库表的设计用 自增长int类型字段做主键,插入数据时怎么保证这条记录在表中是唯一的呢
3个回答
展开全部
像SQLserver这像的数据库是有自增字段的,实现原理SQLserver并没有公布的,但也比较容易猜到实现方式:
1.新建一张表,记录不同表需要自增的字段,同时记录自增字段的最大值,以便下次分配值时,用最大值加1进行赋值。
2.在成功分配一个自增字段值后,同时更新这个表中的对应记录的最大值,来保证下次分配时永远是最大值+1,也就达到了不重复。
注:用这种自定义实现的自增字段有好处,但也要慎重。
优点:如果项目需要迁移数据库平台的话(如从SQLServer迁移到Oracle),就不用考虑自增字段的问题了。
缺点:需要解决程序的并发问题,就是同时请求主键,会分配相同的情况。
1.新建一张表,记录不同表需要自增的字段,同时记录自增字段的最大值,以便下次分配值时,用最大值加1进行赋值。
2.在成功分配一个自增字段值后,同时更新这个表中的对应记录的最大值,来保证下次分配时永远是最大值+1,也就达到了不重复。
注:用这种自定义实现的自增字段有好处,但也要慎重。
优点:如果项目需要迁移数据库平台的话(如从SQLServer迁移到Oracle),就不用考虑自增字段的问题了。
缺点:需要解决程序的并发问题,就是同时请求主键,会分配相同的情况。
展开全部
自增长,即自动增长,该列不允许插入数据,根据用户设置的自增长方案进行增长,当然不存在重复,当然能保证记录是表中唯一的
如果其他列需要保证唯一,可以新建约束:
alter table 表名 add constraint 约束名 unique(不希望重复的列名)
ps:这个不希望重复的列,可以是一列也可以是多列合并
如果其他列需要保证唯一,可以新建约束:
alter table 表名 add constraint 约束名 unique(不希望重复的列名)
ps:这个不希望重复的列,可以是一列也可以是多列合并
追答
alter table 表名 add constraint 约束名 unique(楼盘号,楼栋号,单元号,房号)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然是主键,就已经规定这列是唯一的了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询