积极答复者
字段自动编号如何防止重复冲突

问题
-
1.数据表中的一个ID字段想做成是自动编号,但又不是单纯的数字,前面还有一些字母,具体形式如V000001,S000001,GS000001,递增值是1.这种编号如何设置呢?
2. 在FORM中单击增加按钮时就会增加一个记录,上述的编号会自动显示出来,因为是多个客户端在同时操作,如果其他的客户端也在同时操作的话,会不会同时会出现多个编号如V000002,V000003,V000004.如果其中一个客户端没有保存数据如V000003这个记录没有保存,其他两个人保存了,岂不是表中就会少一条V000003的记录.这样的话这个编号就不会连续了,该如何处理呢?
答案
-
你好!
1 使用系统的自增列功能,另外再设置一个列来存V000001,S000001 中的 V与S(这里看作为类别编码),输出的时候再将类别编码与自增列组合成并格式化效果显示(SQL和C#都可以做处理),比如将 V 和 1 组合成 V000001。
2 在添加数据的时候使用.Net 提供的锁(lock)保证同一时间只有一个人操作。SQL 的事务也行。
3 做这个业务的关键在于在插入数据时才产生新的自增ID,而不是在还没有插入前就显示自增编号。即便你要在插入前需要将自增编号显示给客户看,也要用插入时产生的自增编码为准(提示客户编码已变更),否则你就需要专门写一套逻辑来处理编码不连续,断号等等问题,会更复杂。
知识改变命运,奋斗成就人生!- 已标记为答案 flywithme 2010年12月6日 3:44
全部回复
-
你好!
1 使用系统的自增列功能,另外再设置一个列来存V000001,S000001 中的 V与S(这里看作为类别编码),输出的时候再将类别编码与自增列组合成并格式化效果显示(SQL和C#都可以做处理),比如将 V 和 1 组合成 V000001。
2 在添加数据的时候使用.Net 提供的锁(lock)保证同一时间只有一个人操作。SQL 的事务也行。
3 做这个业务的关键在于在插入数据时才产生新的自增ID,而不是在还没有插入前就显示自增编号。即便你要在插入前需要将自增编号显示给客户看,也要用插入时产生的自增编码为准(提示客户编码已变更),否则你就需要专门写一套逻辑来处理编码不连续,断号等等问题,会更复杂。
知识改变命运,奋斗成就人生!- 已标记为答案 flywithme 2010年12月6日 3:44