数据库设计不合理的设计引起的问题
sql server数据库不合理的设计,将本应该为自动编号ProductId的字段设计成为数字类型的字段了,并且设为主健了,现在这个字段中的值是先查询最大值,然后再加一,现在在线人数很多,如果几个人同时发布的产品的话,写入的时候,同时产生一个ID,第一个人写入数据库正常,那其他人就不正常了,提示主键字段重复插入。
我想到这点,写入的时候,我改用了存储过程,并且在存储过程中使用锁定,但还是没有用,不知道为什么?
这里存储过程中的主要代码
declare @a integer
declare @b integer
select @a = max(Productid) from cc_product
select @b=@a+1
insert into product(ProductId,UserId,ProductName) values(@b,@UserId,@ProductName)
为什么还是不成功?
遇到这样的情况,大家如何解决?