快照隔离允许其它数据库连接仅查看响应其查询的已提交数据,从而防止脏读的发生。会计可使用快照隔离来确保未提交的数据不会影响其查询。
销售经理执行以下语句来为数据库启用快照隔离:
SET OPTION PUBLIC.allow_snapshot_isolation = 'ON'; |
作为销售经理,将所有 T 恤衫的价格提高 $0.95:
执行以下语句来更新价格:
UPDATE GROUPO.Products SET UnitPrice = UnitPrice + 0.95 WHERE Name = 'Tee Shirt'; |
使用销售经理制定的新 T 恤衫价格,计算所有库存商品的总零售额:
SELECT SUM( Quantity * UnitPrice ) AS Inventory FROM GROUPO.Products; |
将返回以下结果集:
Inventory |
---|
6687.15 |
作为会计,执行以下语句计算所有库存商品的总零售额。由于此事务使用快照隔离级别,因此仅计算已提交到数据库的数据的结果。
SET OPTION isolation_level = 'Snapshot'; SELECT SUM( Quantity * UnitPrice ) AS Inventory FROM GROUPO.Products; |
将返回以下结果集:
Inventory |
---|
6538.00 |
作为销售经理,执行以下语句将您的更改提交到数据库:
COMMIT; |
作为会计,执行以下语句查看当前存货的更新后的零售额:
COMMIT; SELECT SUM( Quantity * UnitPrice ) AS Inventory FROM GROUPO.Products; |
将返回以下结果集:
Inventory |
---|
6687.15 |
由于用于会计的事务的快照以第一次读取操作开始,因此您必须执行 COMMIT 以结束事务,并允许会计在快照事务开始后查看对数据所做的更改。
作为销售经理,执行以下语句撤销对 T 恤衫价格的更改并将 SQL Anywhere 示例数据库恢复到其原始状态:
UPDATE GROUPO.Products SET UnitPrice = UnitPrice - 0.95 WHERE Name = 'Tee Shirt'; COMMIT; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |