数据库的四个特性(ACID)

ACID,是指在数据库管理系统DBMS)中事务所具有的四个特性:原子性(Atomicity)、一致性 (Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

在数据库系统中,一个事务是指由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据 库操作的总和构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。ACID的概念在ISO/IEC 10026-1:1992文件的第四段内有所说明。

目录

[隐藏]

[编辑] 四大特性

  • 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回复 (Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性:在事务开始之前和事务结束以后,数据库的完整性限制没有被破坏。
  • 隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
  • 持久性:在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,并不会被回复。

延伸阅读: 数据完整性           
 强制数 据完整性可保证数据库中数据的质量。
 
 1.实体完 整性
  实体完整性将行定义为特定表的 唯一 实 体。
  实体完整性通过  UNIQUE 索引、UNIQUE 约束或 PRIMARY KEY 约束 ,强制表的标识符列或主键的完整性。
 
 2.域完整性
  完整性指 特定列的项的有效性
  您 可以强制域完整性限制类型(通过 使用数据类型 )、 限制格式(通过 使用 CHECK 约束和规则 ) 或限制可能值的范围(通过 使用 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则 )。
 
 3.引用完整性
 输入或删除行时,引用完整性 保留表之间定义的 关系
 在 SQL Server 中,引用完整性通过  FOREIGN KEY 和 CHECK 约束 , 以外键与主键之间或外键与唯一键之间的关系为基础。引用完整性确保键值在所有表中一致。
 这类一致性要求不引用不存在的值,如果一个键值发生更 改,则整个数据库中,对该键值的所有引用要进行一致的更改。
 强制引用完整性时,SQL Server 将 防止 用户执行下列操作:
  a. 在主表中没有关联行的情况下在相关表中添加或更改行。
  b.在主表中更改值(可导致相关表中出现孤立行)。
  c.在有匹配的相关行的 情况下删除主表中的行。--这个特点可以保护你的一些重要表不被误删

  --测试

if OBJECT_ID('tb1') is not null

drop table tb1 

go

create table tb1 (a int  primary key ,value int)

insert tb1 select 1,

union select 2,23 

union select 3,32

go

if OBJECT_ID('tb2') is not null

drop table tb2 

go

create table tb2 (a int references tb1(a),value int)

insert tb2 select 1,4

go

--测试:向TB2中加入TB1中没有的A

insert tb2 select 6,4

/*INSERT 语句与FOREIGN KEY 约束"FK__tb2__a__2E1BDC42"冲突。该 冲突发生于数据库"tempdb",表"dbo.tb1", column 'a'*/

--测试:删除TB1中的a值为的行,使TB2中值为的行孤立

delete tb1 where a=1

/*INSERT 语句与FOREIGN KEY 约束"FK__tb2__a__2E1BDC42"冲突。该 冲突发生于数据库"tempdb",表"dbo.tb1", column 'a'*/

--测试:假设我们的TB1非常重要,而设置了TB2作为它的外表,这样可以起到保护TB1被误删的可能

drop table tb1

/*无法删除对象'tb1',因为该对象正由一个FOREIGN KEY 约束引用*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值