数据库事务

zhushican | 建站教程 | 2014年8月18日

在数据库系统中,例如SQL Server,我们通过在一个存储过程内部使用一个特定卖主的语句来指定事务的操作,例如使用BEGIN TARNSACTION语句来启动一个新事务。使用COMMIT TRANSACTION语句接受对数据所做的全部更新,并且一直允许对数据进行修改,使用ROLLBACK TRANSACTION语句取消当前事务中所做的任何修改。

DoBookArchive的存储过程是在SQL脚本,在数据库WroxBooks内部创建的。这个存储过程的功能就是将表BookList中的一行移动到同一个数据库中的一个名为ArchiveBooks的表中。如果该过程成功完成,该事务被提交,并且更新后的结果将永远应用在数据库表中。如果向ArchiveBooks表中写入时,或是从BookList表进行删除的操作时出现了错误,这两个动作都会回退,这个表也保持为原来的状态,任何一个都没有受到这个过程的影响。
 
但是,这个过程总是以删除表中已有的具有相同ISBN开始。如果整个事务失败,这个动作将会被回退,因此如果记录已经存档(已从表中删除),利用相同的ISBN运行这个存储过程时,它就不会被从表中删除。在在这种情况下,INSERT语句就会失败,因为该记录没有在表中,因此整个事务就会回退,从而撤销对表的DELETE操作。

[阅读全文]
10次浏览 0条评论 数据库  事务  

使用事务处理更新数据源

zhushican | 建站教程 | 2014年8月18日

大多数数据库系统和一些其他类型的数据存储的特点之一就是能够使用事务。简单说来,事务就是一系列全部完成或全部没完成的事件。不可能出现事务中的某些事件发生而另一些没有发生的折中情况。

事务这个名称来自于现实世界。例如在商店里买某样东西,我们用钱来交换售货员的货物。除非我们是受骗了,否则这个交易或者成功,两者皆大欢喜(也就是我们付钱并得到货物),或者交易失败,什么都没发生。不可能出现付了钱却没有得到货物,或是得到了货物却没付钱的情况。在这里我们来说两种类型的事务,数据库事务,数据库专用语句对事务加以控制。它是在数据库的内部执行的,通常事务语句是包含在数据库中的存储过程中的。基于连接的事务,控制事务的语句以及该事务的执行和管理都是在数据库之外实现的。通常这些都是执行SQL语句或存储过程的Connection对象的一个功能。

[阅读全文]
9次浏览 0条评论 使用  事务  处理  更新  数据源  
回顶部