关于数据库事务的问题

vaivxuanzi 2013-08-22 10:27:04
比如有一个文件管理系统,上传文件到系统里的时候,文件保存在磁盘,文件的路径保存到数据库。

问题如下:

1、当我删除一条数据的时候,必须同时将对应的物理路径上的文件删除,怎么确保两个同时成功时才算成功,否则回滚

2、上传文件的时候,需要将文件上传,之后将路径保存到数据库,也可能出现只有一个成功的情况

如果仅仅只是对数据库操作的话,用事务就能搞定。像我这种需求,应该怎么弄
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vaivxuanzi 2013-09-13
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
根本没有必要这样理论化。数据库中有记录但是磁盘上文件已经损坏甚至因为维护而删除了,你的程序难道不能处理?那么先改好你的程序的bug吧。 几乎可以说根本不用在这个问题上考虑什么“数据库事务”问题。
用“数据库事务”实在是不贴切,但是这种问题是会出现的,要是我有处理的思路,就不在这里发帖啦~!
threenewbee 2013-08-25
  • 打赏
  • 举报
回复
如果你觉得有必要,你可以按照这两篇文章的原理自己去做: http://www.cnblogs.com/clam/archive/2012/08/27/2657943.html http://www.cnblogs.com/clam/archive/2012/08/27/2657944.html 如果你能搞明白事务的机制,完全可以在应用层实现事务,并且在不支持事务的数据库系统、文件系统等场合实现自己的事务逻辑。
  • 打赏
  • 举报
回复
根本没有必要这样理论化。数据库中有记录但是磁盘上文件已经损坏甚至因为维护而删除了,你的程序难道不能处理?那么先改好你的程序的bug吧。 几乎可以说根本不用在这个问题上考虑什么“数据库事务”问题。
happytonice 2013-08-25
  • 打赏
  • 举报
回复
1.先判断文件是否存在,不存在则删除记录 2.存在文件,删除文件,无异常删除记录,删除记录异常,回滚 3.删除文件异常,记录不删除
全栈极简 2013-08-25
  • 打赏
  • 举报
回复
上传文件的时候,先上传文件,如果上传成功(没有发生异常),则插入数据库。如果文件上传成功了,但是数据库没有插入成功,则还是认为没有成功,需要重新上传文件。总之以数据库的记录为准。
vaivxuanzi 2013-08-25
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
删除文件的代码也放到事务中,处了catch数据库错误,也要判断删除是否成功,不成功回滚
谢谢大大
bdmh 2013-08-22
  • 打赏
  • 举报
回复
删除文件的代码也放到事务中,处了catch数据库错误,也要判断删除是否成功,不成功回滚

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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