多用户update数据时,不能保证完整性
DataModule1.database1.StartTransaction;
with qryfree do
begin
close;
sql.clear;
sql.add('Update MZJCK set JIESUANZT=1 Where DJH= :DJH ');
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDKHZ set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDK set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
end;
DATAMODULE1.Database1.Commit;
except
DATAMODULE1.Database1.Rollback;
application.MessageBox('数据保存错误.检查输入.','提示',mb_iconinformation+mb_ok);
exit;
end;
在上面的程序段执行后,三个数据表(SQL SERVER 20000)MZJCK、MZCKDK、MZCKDKHZ中的JIESUANZT都应为1,但说不定哪一天会出现mzjck中的JIESUANZT=1,而MZCKDK,MZCKDKHZ中的不为1,但程序运行时一点出错信息都没有。
三个表中,MZJCK中数据量是MZCKDKHZ的50%,MZCKDKHZ是购MZCKDK的50%,但更新不应和数据量的大小有关,是不是在更新时,有别的用户正在操作这三个表,才造成有的数据没有更新?
是什么原因,怎样解决呀???
with qryfree do
begin
close;
sql.clear;
sql.add('Update MZJCK set JIESUANZT=1 Where DJH= :DJH ');
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDKHZ set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
close;
sql.clear;
sql.add('Update MZCKDK set JIESUANZT=1 Where DJH= :DJH ') ;
parameters.ParamByName('DJH').value:=djhid;
execsql;
end;
DATAMODULE1.Database1.Commit;
except
DATAMODULE1.Database1.Rollback;
application.MessageBox('数据保存错误.检查输入.','提示',mb_iconinformation+mb_ok);
exit;
end;
在上面的程序段执行后,三个数据表(SQL SERVER 20000)MZJCK、MZCKDK、MZCKDKHZ中的JIESUANZT都应为1,但说不定哪一天会出现mzjck中的JIESUANZT=1,而MZCKDK,MZCKDKHZ中的不为1,但程序运行时一点出错信息都没有。
三个表中,MZJCK中数据量是MZCKDKHZ的50%,MZCKDKHZ是购MZCKDK的50%,但更新不应和数据量的大小有关,是不是在更新时,有别的用户正在操作这三个表,才造成有的数据没有更新?
是什么原因,怎样解决呀???
...全文
相关推荐
PB并发控制与Row changed between retrieve and update详解
PB并发控制与Row changed between retrieve and update详解PB并发控制机制是指在多用户同时访问数据库时,防止数据不一致和丢失的机制。
基于SQL Server2000的锁机制及其应用.pdf
在执行SELECT语句时,系统通常会设置共享锁,一旦数据读取完成,锁就会被释放。3. 更新锁(Update Lock):在准备更新数据时,系统会先使用更新锁,这样数据可以被读取但不能被修改。
老二牛车第三章理论课锁和表分区.pdf
在多用户环境中,为了保证数据的一致性和完整性,Oracle数据库通过锁机制来保护正在被修改的数据。
自考数据库系统原理4375音频同步教程 5.4数据更新
例如,如果一个学生的年龄不能超过100岁,那么在更新年龄时,系统会检查并拒绝超出范围的值。3. 数据完整性(Data Integrity):分为实体完整性、参照完整性和用户定义的完整性。
触发器技术在SQL Server 2000中的应用.pdf
触发器的主要作用是保证数据库的数据完整性,避免出现不符合数据完整性规则的数据记录。在多用户的关系数据库系统中,保证数据完整性是一个核心问题,因为用户可能会输入无效或错误的数据。


数据库相关

