原子性:事务对数据修改,要么全都执行,要么全都不执行。
一致性:事务完成时,必须使所有的数据都保持一致状态。<----这句话不理解
隔离性:事务查看数据时数据所处的状态,必须是另一并发事务修改它之前或之后的状态,事务不会查看中间状态的数据。
持久性:事务完成之后,它对于系统的影响是永久性的。即使出现系统故障该事务也将一直保持。
一致性:事务完成时,必须使所有的数据都保持一致状态。<----这句话不理解
隔离性:事务查看数据时数据所处的状态,必须是另一并发事务修改它之前或之后的状态,事务不会查看中间状态的数据。
持久性:事务完成之后,它对于系统的影响是永久性的。即使出现系统故障该事务也将一直保持。
即一个事物开始的时刻起到事物结束,数据库的状态需要保持一致
例如你开始了一个查询,在这个查询的期间另一个事物把A记录的值由0改成1,然后提交,那么之前那个查询结束后查询结果中A的值仍然是0,而不是1
对oracle来说,是由undo文件来实现一致性的
只有update,delete这种操作会表加上行级锁,select是不会加锁的(当然除了oracle外,很多数据库都曾有多读锁),而且这些一致性不是概念,正如你所说的
oracle一个事物正在查,另外一个事物修改
操作不当不尽会引发性能问题,当回带来不可挽救的ora-01555错误
开发人员一定要清楚的明白这些
create table po(po_id integer, vendor_id integer, constraint fk_vendor_po foreign key(vendor_id) references vendor deferrable);
insert into vendor values(1, 'HK');
insert into po values(1, 1);
update vendor set vendor_id = 2;
set constraints fk_vendor_po deferred;
update vendor set vendor_id = 2;
update po set vendor_id = 2; commit;