技术开发 频道

用Microsoft.net实现数据库事务(2)


【IT168技术文档】

  数据库事务
  数据库事务是其他事务模型的基础,本文讨论的事务都是基于数据库事务实现的,他们仅是隐藏了处理事务的复杂的或者容器专有的代码。当一个事务创建时不同数据库系统都有自己的规则。缺省地,SQL Server工作在自动提交的模式下,每个语句执行完后会立即提交,与此对照的是Oracle需要你包含一个提交语句。但是当一个语句通过OLEDB执行时,它执行完后一个提交动作会被附加上去。为了使下面的例子适用于Oracle,你需要去掉begin transation和commit transation两个语句,因为这两个语句会当作一个单独的事务来运行。
  
  优势
  
  ◆ 所有的事务逻辑包含在一个单独的调用中
  ◆ 拥有运行一个事务的非常好的性能
  ◆ 独立于应用程序
  
  限制
  
  ◆ 事务上下文仅存在于数据库调用中
  ◆ 数据库代码与数据库系统有关
  
  例子:
 CREATE PROCEDURE up_purchaseItem (   @customerId as int,   @itemId int,   @itemqty int)   AS   DECLARE @orderid int   BEGIN TRANSACTION   -- Update the inventory based on purchase   UPDATE inventory   SET qtyinstock = qtyinstock - @itemqty   WHERE inventory.productid = @itemid;   IF @@Error != 0 GOTO ERROR_HANDLER   -- Insert the order into the database   INSERT INTO orders   VALUES (@customerId, @itemId, @itemqty, getdate());   IF @@Error != 0 GOTO ERROR_HANDLER   SET @orderid = @@IDENTITY   COMMIT TRANSACTION   RETURN @orderid   ERROR_HANDLER:   ROLLBACK TRANSACTION   SET NOCOUNT OFF   RETURN 0   GO
0
相关文章