还是有关事务处理的问题!(50分)

  • 主题发起人 主题发起人 lipingcool
  • 开始时间 开始时间
L

lipingcool

Unregistered / Unconfirmed
GUEST, unregistred user!
为控制数据库并发,我是不是对每一个SQL(select除外)语句都要加上事务
处理语句?是否要先判断事务启动没有?
能不能在某个地方启动事务后,程序中所有对数据库的操作都由此事务控制,直到程序退出,而不是每个SQL语句都要启动事务?
并且,开始一个事务后,需要终止它吗?
还望各位多多指教!
 
难道就没有人帮帮我吗?小弟虽然功力尚浅,但也曾在大富翁上倾力回答问题啊!
 
要视你具体的数据操作而定,对于一项操作而言可能是一条sql语句,也可能是多条语句比如主从表或多个表的插入删除.进行操作之前要检查事务是否开始,如果没有要
则要开始;操作结束后要提交commit以结束事务.如果有错误发生则要回滚rollback.
只有提交后对数据库的修改才会一次性的写入,如果回滚则此次事务所做的所有操作全部取消.这样才能保证数据操作不会被在中途打断造成数据不完整.
所以你说的程序开始启动事务,退出时才结束事务是不行的.
 
同意popeye。
另外一般不用在delphi中显示控制事务。除非类似主从表。
 
小弟做的是C/S模式的数据库管理系统,若不显式控制事务的话,在多个用户同时
操纵数据表的时候,BDE是否会自动锁表呢?
 
》是否要先判断事务启动没有
要。
if database1.InTransaction and (MesssageDlg('提交?',mtconfirmation,
[mbYes,mbNo],0)=mrYes )then
begin
database1.commit;
database1.strartTranaction;
database1.refresh;
end else
messageDlg('不能提交‘。。。。)
----是否显式提交看客户要求
呵呵。。 lipingcool兄是不是敢进度阿,这么着急
 
我发现用update语句更新一条不存在的记录时,数据库不会报错,所以用事务也不
能回滚.
是不是一定要在服务器端判断update语句影响的列数来得知语句是否生效?
各位有何高招!!!
 
多人接受答案了。
 
后退
顶部