使用Oracle,我需要允许另一个事务查看未提交的数据,或者如果更改它的事务未能成功完成,则将回滚的数据。
让我们看一个例子:
安排
CREATE TABLE Car
(
Name VARCHAR(20) NOT NULL,
Building NUMBER(1) NOT NULL
);
INSERT INTO Car (Name, Building) VALUES ('Car 1', 0);
法案
连接1
UPDATE Car SET Building = 1 WHERE Name = 'Car
1```
';
连接2
```js
SELECT * FROM Car;
结果:
Name Building
===================
'Car 1' | 1
|
--Should be able to view the new Building value (1/true) from CONNECTION1 before
--the CONNECTION1 transaction be commited.
连接1
--Do a lot of work to build the car (20seconds), then sets the Building flag to 0 and commits the transaction.
可以在SQL Server中使用CONNECTION2上的SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED来实现,但在Oracle中则不能,它没有此选项。
我需要提供给最终用户以查看汽车是良性构建的,并且我需要确保在构建过程中是否发生了某些故障(例如能源故障),Building标志返回0 / false。
我需要提供给最终用户以查看汽车是良性构建的,并且我需要确保在构建过程中是否发生了某些故障(例如能源故障),Building标志返回0 / false。
除了(而不是使用)布尔标志,为什么不管理可能的状态列表,例如:
0 -新 1 -进行中 2 -构建失败 3 -建立成功 这样,您就可以拥有用于处理构建的连接,以在流程的开始和结束时更新状态(并始终立即提交)。在另一个连接上,您可以跟踪项目的生命周期。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。