提出问题:大家如何控制主键的重复性?
具体说明:SQL数据库Product表 productId,productName 其中productId 为主键【非自增列】, 业务要求新增一个商品到product表,程序中如何处理主键
方案一: productid不让客户录入,由程序读取product表中的Max(productid)+1返回做主键
方案二:界面提供2个TextBox,一个供客户录入productid,一个录入productname, 在插入数据库前判断productid是否重复?
有没有更好的办法?请各位指教 谢谢
Parāllél(58220937) 20:11:24
第二方案是绝对不可能的
Parāllél(58220937) 20:14:51
站在客户的角度 要是你商品太多了根本无从判断什么ID才是不重复的
[深圳]预言者(405662443) 20:15:16
而且用户没必要知道Id啊
[深圳]预言者(405662443) 20:15:43
那东西就是一唯一标识符
华仔(315155589) 20:16:10
这也是我怕的,让客户录入ID。商品一多就麻烦了
Parāllél(58220937) 20:16:39
我想问一下 你以前的ID是怎么添加进去的?
华仔(315155589) 20:17:13
专门一个表管理主键
华仔(315155589) 20:17:33
每次新增都去读取最大+1
华仔(315155589) 20:18:05
由于行业特殊,很多主键是这种形式ABC201012230001
[深圳]预言者(405662443) 20:18:07
我们公司也这么做的
华仔(315155589) 20:18:58
但是我想如上面的商品表productID 也这么做没必要
华仔(315155589) 20:19:08
毕竟不是业务单号
华仔(315155589) 20:19:25
他们只是一些基础数据而已
Parāllél(58220937) 20:20:09
主要方案一要多读一次ID也不好
华仔(315155589) 20:20:39
设自增最简单,但是 都这么做 。。。。
华仔(315155589) 20:21:10
想不到好办法控制基础数据的主键 ,呵呵 走了 去吃饭了。感谢大家的帮助。谢谢了
Parāllél(58220937) 2010-12-23 20:26:06
insert into Product(productId,productName) select productId+1,productName from Product where productId=max(productId)
[深圳]飒风(249523101) 2010-12-23 20:26:57
guid
Parāllél(58220937) 2010-12-23 20:27:02
这样就一次性完成了
[深圳]飒风(249523101) 2010-12-23 20:27:51
用guid来存productid
Parāllél(58220937) 2010-12-23 20:31:20
insert into Product(productId,productName) select top 1 productId+1,'productName' from Product order by productId desc
Parāllél(58220937) 2010-12-23 20:31:23
这样也好
华仔(315155589) 21:31:20
Parāllél(58220937) ---谢谢 您提供的2中方案
Parāllél(58220937) 21:32:28
感谢他