读书人

数据库并发访问,该如何解决

发布时间: 2012-03-21 13:33:14 作者: rapoo

数据库并发访问
应用程序运行的windows terminal server上,在多用户情况下,如果两个用户同时修改同一个表的时候,就会发生错误.对这个表的修改是在用户做拷贝动作的时候发生的,在第一个用户拷贝的时候,这时候另外一个用户也去拷贝,他们都需要修改同一个表,这时候冲突就发生了,不可接受的时候,这个时候,第一个用户的操作也会中途失败.
抛异常的地方 recordset::update()调用的dbcore.cpp:ThrowDBException((RETCODE)(lRowsAffected ==0 ?
AFX_SQL_ERROR_NO_ROWS_AFFECTED:
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED))
异常信息的pexception->m_strError是 no rows were affected by the update or delete operation.
我想知道,有没有好的建议,在两个用户同时update一个表的时候,能够协调好.
谢谢大家了.
大概源代码是这样:

C/C++ code
 
void getID()
{
begintrans;

update(table);//这个函数出错,用的是ODBC机制

committrans;
}


上面这个函数会被在一些递归函数中调用很多次.谢谢大家了,份不够再开贴加.

[解决办法]
数据库在进行并发访问的时候,会自动对相应的对象进行加锁。可以设置加锁的粒度,把锁的粒度设置小一点。也可以设为不加锁,但是不建议这样,因为会造成数据的不一致等等错误。
[解决办法]
探讨
引用:
数据库在进行并发访问的时候,会自动对相应的对象进行加锁。可以设置加锁的粒度,把锁的粒度设置小一点。也可以设为不加锁,但是不建议这样,因为会造成数据的不一致等等错误。

怎么设置呢?

[解决办法]
帮顶。
[解决办法]
探讨
老乌龟,你觉得好一点的解决方法是什么呢,谢谢啦

读书人网 >SQL Server

热点推荐