SQL sever 事务例子
时间: 2024-10-16 18:04:05 浏览: 16
从生活来看SQL SEVER中的锁和事务
在SQL Server中,事务的例子可以这样展示:
假设有一个销售订单表(OrderDetails),存储产品ID、数量和总价信息,我们想更新库存并记录订单,这两个操作需要一起完成,因为如果其中一个失败,我们就希望整个过程不会影响数据库的其他部分。我们可以创建一个事务来处理这个场景:
```sql
BEGIN TRANSACTION; -- 开始事务
-- 更新库存
UPDATE Inventory
SET Stock = Stock - (SELECT Quantity FROM OrderDetails WHERE ProductID = 1)
WHERE ProductID = 1;
-- 记录订单
INSERT INTO OrderDetails (ProductID, Quantity, TotalPrice)
VALUES (1, 5, 250);
IF @@ROWCOUNT = 0 -- 检查是否插入成功
BEGIN
ROLLBACK TRANSACTION; -- 如果插入失败,回滚事务
PRINT 'Failed to insert order';
END
ELSE
BEGIN
COMMIT TRANSACTION; -- 插入成功,提交事务
PRINT 'Order inserted successfully';
END;
```
在这个例子中,如果更新库存导致库存不足,`ROLLBACK`会撤销库存减少的操作,并保留之前的库存值。如果两个操作都成功,`COMMIT`会保证数据一致性,新订单和库存调整同时生效。
阅读全文