栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

行锁-手动使用它们

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

行锁-手动使用它们

我建议的一种方法是在记录中沿记录的字段显示指示是否正在处理记录的字段。然后实现一个“从队列中读取下一个”存储过程,该存储过程执行以下操作,以确保没有2个进程选择相同的记录:

BEGIN TRANSACTION-- Find the next available record that's not already being processed.-- The combination of UPDLOCK and READPAST hints makes sure 2 processes don't -- grab the same record, and that processes don't block each other.SELECt TOP 1 @ID = IDFROM YourTable WITH (UPDLOCK, READPAST)WHERe BeingProcessed = 0-- If we've found a record, set it's status to "being processed"IF (@ID IS NOT NULL)    UPDATe YourTable SET BeingProcessed = 1 WHERe ID = @IDCOMMIT TRANSACTION-- Finally return the record we've picked upIF (@ID IS NOT NULL)    SELECT * FROM YourTable WHERe ID = @ID

有关这些表提示的更多信息,请参见MSDN。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号