最近在做一个系统,用存储过程实现插入数据,不过要插入主表和明细表两个表,所以当插入主表成功,而明细表失败的时候,就要遇到事务回滚的问题,怎么实现呢??希望高手指教一二,必送高分!以次答谢!
解决方案 »
- mdi窗口去除标题栏文字和系统图标
- 如何将一个数组转换成一个widechar数组?
- 用ADO怎样写边接字串才能生成VFP3.0以下版本的DBF表?
- 如何的MDI的父窗体中插入图片????????
- TStoredProc调用存储过程问题!十万火急(另开新号加100分)
- 三层结构,在程序中能同时操作两个数据库吗?
- 问:那儿《有高效率数据库应用系统篇》这本书的电子版本?在那儿下载?谢谢,50答谢:)
- 请教一个关于delphi与ORACLE连接问题(连接速度太慢)
- MPEG视频文件播放时,如何控制其音频参数,如混合成单声、只播放左声等。
- 怎样将用户输入的年月日(字符串)转化成日期类型进行sql查询
- 如何让DBGRID单元格中的超长内容折行显示
- 如何在rar或Zip文件中读取或添加注释?
BEGIN TRAN
COMMIT TRAN使用事务执行失败的话事物会回滚,不过最好在存储过程的开始启用一个选项
set xact_abort on
你可以在添加主表内容从表内容的操作时用异常处理try
except 这样在操作失败的时候,可以抛出异常,当然也可以人为判断程序执行的结果
DM.ADOConnection1.BeginTrans;
query.Close;
query.SQL.Clear;
query.SQL.Add('delete from table_ls');
query.ExecSQL;
DM.ADOConnection1.CommitTrans;
except
MessageBox(handle,'系统发生错误,请重试或关闭系统!','提示信息',MB_OK+MB_ICONEXCLAMATION);
DM.ADOConnection1.RollbackTrans;
end;//end try
begin tran //开始事务
commit tran //没错,提交事务rollback tran //有错,回滚事务
支持 Tensionli() 的答案!
《查询》什么是事务处理?怎么进行事务处理?
http://access911.net/index.asp?u1=a&u2=71FABE1E13DC
关于此主题请参考:
关于事务处理《查询》
http://access911.net/index.asp?u1=a&u2=73FABF1E14DC