关于如何解决数据库中修改数据记录锁定的问题???

lys_777 2003-06-24 02:14:53
我现在用ADO 联接 ms SQLserver2000数据库,如何实现当A用户从数据库里调出10条数据并锁定这10条数据,1)B用户无法读出这10条数据 2)B用户只能以只读的形式调出这10条数据。当A用户处理完修改保存后并释放锁定,则B用户才能修改这些数据。
我再处理这问题时,我是增加一个锁定字段标志或锁定表。当数据被A用户以编辑状态调出,在这些数据加上锁定标志,则B将无法进行编辑,但这样做有一个问题我无法解决,就是当A用户在编辑这些数据时,突然意外死机或退出,则数据标志无法被取消,那么就会造成,数据没人编辑,而且系统却认为有人在编辑,那么就只能用手动去除数据锁定标志了:( ,请问各位兄台有没有好的处理方法,不知ms SQLserver2000本身的锁定方式能不能解决这样的问题???
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leimin 2003-06-24
  • 打赏
  • 举报
回复
你的要求完全可以通过SQLSERVER事务来处理,通过
SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ
| SERIALIZABLE
}
来分别处理,比如:
use pubs
go
set transaction isolation level SERIALIZABLE

begin tran test

select * from sales with (tablockx)
这样第二个用户就无法看到该表的记录。
如果
use pubs
go
set transaction isolation level read uncommited

begin tran test

select * from sales with (tablockx)
这样第二个用户就看到该表的记录,但无法修改。


MSSQLSERVER2000的LOCK的机制是非常灵活的,你可以通过HINTS指定不同的LOCK来到底自己的需求。
leimin 2003-06-24
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1927/1927233.xml?temp=.1576654
AnaDes 2003-06-24
  • 打赏
  • 举报
回复
不知楼主是用哪种开发工具做前台应用.我在这里给你一个提示,VC方面的.
1)B用户无法读出这10条数据
这个我不知道怎么去做.B用户无法读出这10条数据,这个我觉得没有必要去实现.

2)B用户无法读出这10条数据
这在VC中有多种实现方法:
(1)用CDatabase的事务去处理:
CXxxSet.Open();
CXxxSet.m_pDatabase->BeginTrans(); // CXxxSet是 CRecordset的派生类
//下面是对记录集的操作
......
CXxxSet.m_pDatabase->CommitTrans();
如果你对记录集改变的过程中失败则:
CXxxSet.m_pDatabase->RollBack();

(2)调用CRecordset::SetLockingMode(parmeter);
顺便说一下:我个人认为就查询时就不用锁定记录集.
愉快的登山者 2003-06-24
  • 打赏
  • 举报
回复
增加锁时间,由JOB定时检查时间。当锁时间足够长时,如:一个小时,自动清除锁和时间。
程序在锁时,同时加上时间。
lys_777 2003-06-24
  • 打赏
  • 举报
回复
我现在用ADO 联接 ms SQLserver2000数据库,如何实现当A用户从数据库里调出10条数据并锁定这10条数据,1)B用户无法读出这10条数据 2)B用户只能以只读的形式调出这10条数据。当A用户处理完修改保存后并释放锁定,则B用户才能修改这些数据。
我在处理这问题时,我是增加一个锁定字段标志或锁定表。当数据被A用户以编辑状态调出,在这些数据加上锁定标志,则B将无法进行编辑,但这样做有一个问题我无法解决,就是当A用户在编辑这些数据时,突然意外死机或退出,则数据标志无法被取消,那么就会造成,数据没人编辑,而且系统却认为有人在编辑,那么就只能用手动去除数据锁定标志了:( ,请问各位兄台有没有好的处理方法,不知ms SQLserver2000本身的锁定方式能不能解决这样的问题???

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧