菜鸟系列---主键问题

JzeroBiao 2006-03-14 04:38:30
我想问一下用自增列作为主键好,还是用max(id)+1作为主键好
1.那个更安全一些,一般用那个比较多
2.为了方便管理,我想用max(id)+1作为主键,有什么方法可以避免重复ID啊
...全文
137 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
aniude 2006-03-14
我想问一下用自增列作为主键好,还是用max(id)+1作为主键好
1.那个更安全一些,一般用那个比较多
2.为了方便管理,我想用max(id)+1作为主键,有什么方法可以避免重复ID啊
当然是自增好了,这样的序列才是唯一的,
max(id)+1可能id会存在id重复的可能,好好想想把
回复
wgsasd311 2006-03-14
用max(id)+1会不会出现重复id,如何避免~

====>可以用触发器实现
create trigger tr_insert on 你的表
instead of insert -- 注意触发器类型
as
if @@rowcount = 0 return
select * into # from inserted
declare @pkid int
select @pkid=isnull(max(id),0) from 你的表
update # set id=@pkid, @pkid=@pkid+1
insert 你的表 select * from #
回复
JzeroBiao 2006-03-14
用max(id)+1会不会出现重复id,如何避免~
回复
wgsasd311 2006-03-14
我想问一下用自增列作为主键好,还是用max(id)+1作为主键好
1.那个更安全一些,一般用那个比较多
自增用得多,安全问题不好说,要具体看写程序人
2.为了方便管理,我想用max(id)+1作为主键,有什么方法可以避免重复ID啊
在插入或更新id列时,不要放入长事物中,
回复
viptiger 2006-03-14
用自增列作为主键好,max(id)+1得方法会降低效率
回复
lsqkeke 2006-03-14
自增列作为主键好,还是用max(id)+1
--------------------
有什么区别吗? 原理都一样!

如果要的话,直接用自增列作为主键,还不用另写代码去维护!
但用这个作为主键,就必须控制好能修改自增值的情况发生,这就关系到identity列的问题了
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-03-14 04:38
社区公告
暂无公告