所有的数据库事务都需要具有4个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。


原子性:事务中的所有任务都必须执行或者都不执行。不存在部分事务。

一致性:事务将数据库从一个一致性状态带到另一个一致性状态。

隔离性:一个事务所带来的影响直到该事务提交之前对其他事务来说都是不可见的。

持久性:经过提交的事务所进行的修改是永久性的。


例如:

CREATE TABLE ACIDTEST (A INTEGER, B INTEGER);

ALTER TABLE ACIDTEST ADD CONSTRAINT B CHECK (A+B=100);



插入数据:

INSERT INTO ACIDTEST VALUES (40, 60);
COMMIT;


一致性:

插入的数据必须都是INTEGER,而且A+B=100才行。


隔离性:

事务A正在执行SELECT * FROM ACIDTEST,事务B正在UPDATE ACIDTEST,此时,事务A读取到的是事务B做COMMIT前的数据。


原子性和持久性很容易理解。