日期:2014-05-17  浏览次数:20458 次

纠结了好久的问题,关于运行机制。与技术无关。
本帖最后由 hgwyl 于 2013-03-29 23:54:44 编辑

拿添加记录来比方
1、用户在任意电脑使用WEB,通过WEB服务器向数据库添加记录。
2、记录的字段值是两个数组,添加多条记录用。
3、原来我想着,不用存储过程事务的话,会不会发生某些不知名错误,导致数据不统一。
比如添加了一条记录后,断电,后面的记录就没有添加成功。
因此要用事务处理。
而存储过程又不支持split的操作,需要结合其他内置函数进行处理。里面还涉及到数组的分割、事务的处理。
对于我这种技术,太难了!

今晚洗澡的时候突然想到一个实际的问题,不知道我是不是2了。

1、用户发送数据包——WEB服务器——数据库
2、下面这个机制不知道对不对?
if 用户断电 and 数据包发送完毕 then
WEB服务器已经收到所有数据,自行与数据库处理——没影响
elseif 用户断电 and 数据包未发送完毕 then
WEB页面出错,未能与数据库响应并进行操作——也没影响

end if
3、如果上一点成立,只要保证WEB服务器与数据库服务器的正常。
不用去管用户端的死活了

不知道是不是这样……?

------解决方案--------------------
不知道你想要什么样的结果.事务处理和支不支持split操作完全没有关系.
------解决方案--------------------
数据库本身是支持事务的,比如Insert Update Delete,你也可以使用Tran语句实现多个语句的事务,有问题会自动回滚的。至于你说的用户断电,这个跟数据库没有多大关系。如果请求发送到服务器,服务器就会处理,如果没有就不会处理
------解决方案--------------------
  如果断电,用什么方法都会执行到一半出错。比如两个语句,web服务器即使全都提交给了DBMS,DBMS也是要分步骤记入永久存储的,在任何一步都可能断电,这样数据就不能完整的写到数据库的永久存储中(硬盘文件)。
  所以要用事务,把某几个语句标记为一个事务后,执行事务前DBMS会在日志中做一个事务开始标记,全部执行完并提交后,DBMS再做一个事务结束标记。
  如果事务执行过程中断电,此时数据库是错误的。当重新启动后,DBMS会检查执行的事务,如果一个事务有开始标记而没有结束标记,就会撤销从这个事务标记开始的、本事务执行的语句。
------解决方案--------------------
你发送的是数组啊,所以完全不用考虑断电之类的问题.

服务端是接收到全部数据才执行的.不是接收一点就执行一点.所以你完全不用考虑