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

 我来答
神笔小良马
2013-04-02
知道答主
回答量:12
采纳率:100%
帮助的人:3.2万
展开全部
像SQLserver这像的数据库是有自增字段的,实现原理SQLserver并没有公布的,但也比较容易猜到实现方式:
1.新建一张表,记录不同表需要自增的字段,同时记录自增字段的最大值,以便下次分配值时,用最大值加1进行赋值。
2.在成功分配一个自增字段值后,同时更新这个表中的对应记录的最大值,来保证下次分配时永远是最大值+1,也就达到了不重复。
注:用这种自定义实现的自增字段有好处,但也要慎重。
优点:如果项目需要迁移数据库平台的话(如从SQLServer迁移到Oracle),就不用考虑自增字段的问题了。
缺点:需要解决程序的并发问题,就是同时请求主键,会分配相同的情况。
skyfukk
2013-04-02 · TA获得超过1187个赞
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:635万
展开全部
自增长,即自动增长,该列不允许插入数据,根据用户设置的自增长方案进行增长,当然不存在重复,当然能保证记录是表中唯一的
如果其他列需要保证唯一,可以新建约束:
alter table 表名 add constraint 约束名 unique(不希望重复的列名)
ps:这个不希望重复的列,可以是一列也可以是多列合并
追问

如这张表:

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

追答
alter table 表名 add constraint 约束名 unique(楼盘号,楼栋号,单元号,房号)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanzai32
2013-04-02 · TA获得超过114个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:118万
展开全部
既然是主键,就已经规定这列是唯一的了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式