oracle和sybase都有序号生成器,不知道sql server 有没有,有的话,可是使用。前端程序无须考虑编号是否重复,服务器会完成这一工作。
解决方案 »
- 大家帮忙解决一下触发器的问题!!!!
- 如果有数据库文件和日志文件,如何恢复到指定时间段
- 这个问题能用Pivot解决吗?
- sqlserver6.5升级到sqlserver2000
- 一个数据库中有两个表前两列结构一样,列名也一样,可不可以用一条语句将两个表的前两列显示到一个DBGrid控件中?
- 请问SQL2000中日期时间的计算
- when should you perform a change based recovery?
- 如何截断SQL Server7.0的日志
- 求助:“ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION”。弟兄们帮帮忙吧!!!
- SQL中的对象和实体有什么区别? 新手求解
- 请问这个触发器该怎么写?
- SqlServer 字符集的问题?
OK?
或者:
2、在向数据库中保存的瞬间根据库中已有序号产生新序号,那要看你的并发用户有没有可能在这一瞬间(索引旧序号、计算新序号、保存新记录加一起的时间)同时操作。
建一个表存储最大号,每个人操作时取最大号,后加1,然后和必要字符合成编码
例:当前最大号:12
1.提取12,后加1,当前最大号:13(别人仍可用)
2.合成编码AAA-01-00012
此方法绝对有效,其隐患:会产生断号.
我再说一下我的办法,前面可能没说清:
1、首先根据库中已有序号产生新序号,追加一条用新序号的空记录到库中,先占上此序号,当然不允许空的其他字段要添点东西,还要有个字段做有效标记,当用户真正保存时,用update命令修改这条记录将有用的内容添全,如果用户不保存,删了这条事先加好的记录就行了。但可能会产生空号。
或者:
2、先不生成序号,在向数据库中提交保存的时候根据库中已有序号产生新序号,那要看你的并发用户有没有可能在这一瞬间(索引旧序号、计算新序号、保存新记录加一起的时间)同时操作。