| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:请教如何查询SQL SERVER增加记录的ID值
只看楼主 加入收藏
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1088
专家分:2677
注 册:2015-12-30
收藏
得分:0 
楼主那种分次执行SQL语句的做法(SQLEXEC(nhandle,SQL语句),理论上是存在数据保存不完整的情况
介绍一下我的做法
把需要执行的SQL语句用text to 变量...endtext做成一个文本
象下面这样:
text to 变量名
    BEGIN TRANSACTION
    需要执行的SQL语句
    ...
    commit TRANSACTION
endtext
SQLEXEC(nhandle,变量名)
这样可一次执行全部语句,使用事务可以保证SQL完整执行,如果出现中断或异常,语句不会真正提交,也不需要你自己处理回滚

2024-05-26 18:45
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:217
专家分:1600
注 册:2023-6-29
收藏
得分:0 
你得使用with(updlock)使用全表的读写锁,这样写: SELECT MAX(id) AS NewID from yksb.dbo.shebei_zl with(updlock),    并将代码放入tran中, 这样才能独占并阻止其他线程读取表, 这样带来的问题就是非常影响性能

所以改一个方案:    建一个guid字段,  因为guid是唯一的, 不会产生相同值,在程序中生成guid, 插入记录后, 通过这个guid字段去反查出id, 这样可以不用加锁
2024-05-27 10:28
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
非常给那些师傅们的解答,问题还没有彻底解决,laowan001和yiyanxiyin2位版主的解答我还暂时没有弄通,暂时先放放,过一段时间在来请教,再次感谢
2024-06-02 19:14
快速回复:请教如何查询SQL SERVER增加记录的ID值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035226 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved