知识大全 事务(1)
Posted 语句
篇首语:不要以为你的努力徒劳无功,权当做磨练你的意志。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 事务(1)相关的知识,希望对你有一定的参考价值。
SQL实战新手入门:事务(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
事务( )
事务是SQL提供的一种机制 用于强制实施数据库的完整性并保持数据的统一性 事务提供了这样一种机制 可以确保将多个步骤的操作作为单个执行单元 如果事务中涉及的任何一个步骤失败 那么整个事务都将回滚 如果所有的步骤都已经成功完成 那么既可以提交事务(即将所有的修改保存回数据库) 也可以回滚事务(即取消所有修改)
尽管保留了SQL标准的灵魂 但各个RDBMS厂商在对事务的实现上存在着一定的差异 桌面型数据库在嵌入数据库的代码中处理事务(对于Microsoft Access来说是VBA) 其他RDBMS Oracle IBM DB Microsoft SQL Server 和PostgreSQL 都具有健壮的事务支持 MySQL实现了一个独一无二的特性 即为表指定存储引擎的功能 MySQL的两种存储引擎 InnoDB和IBMDB I 都提供了对事务的原生支持
什么是事务
事务在更小的粒度上补充了会话的概念 它将发生在会话期间的每一个操作划分为逻辑的工作单元 通过这样的办法 数据库操作 那些涉及数据修改的操作 将按照步骤一步一步地执行 并且可以在任何时刻回滚操作 或者在每一个步骤都成功执行的情况下提交这些操作
涉及创建和销毁数据库对象的数据定义语言(DDL)结构的修改并不是事务性的 可能无法回滚 这取决于RDBMS以及一些附加的参数设置(例如隔离级别 这将在本章后面进行讨论)
SQL标准一开始就定义了事务 并在后续的标准中增强了这一概念 根据SQL标准 事务是由RDBMS启动的 并一直持续到发出一条MIT或ROLLBACK语句 细节则由RDBMS自己实现 表 列出了SQL标准定义的事务管理语句
表 SQL标准定义的事务管理语句
一个工作单元必须满足ACID的条件 才能称之为一个事务 ACID这个首字母缩略词代表了如下含义
原子性 所有修改要么全部接受 要么全部取消 如果批中的任何一个语句失败 则所有修改必须被复原
一致性 在事务完成或回滚时 操作中涉及的所有数据必须保持一致性状态 不能破坏数据库的完整性
隔离性 除非将事务提交给数据库 否则一个事务不应该知道任何其他事务对数据所做的修改 可以设置不同的隔离级别来改变这一默认行为
持久性 对于已经成功提交到数据库的事务 其结果将保存在数据库中
关于事务 一个真实生活的例子就是ATM(银行的自动取款机)的取款操作 假设你需要取一笔钱 并决定从最近的取款机取钱 你只需要将你的银行卡(用户ID)插入取款机 并输入你的个人识别码(PIN) 就可以开始一个会话过程 一旦银行确认了你的身份 就允许你继续操作 你可以要求提取指定数量的现金 这时就会开始一个事务 它涉及几个操作 取款机必须检查你的账户 验证你是否具有足够的钱来完成该事务 并从你的账户总额中减去取款金额 然后再向你公布账单 如果其中任何一个步骤(以及其他一些步骤 这取决于指定银行定义的策略)失败 则必须取消该事务 所有数据都必须恢复到事务开始之前的状态 这意味着除非RDBMS已经从你的账户余额中减去了取款额 否则你无法取到现金 除非你的账户上有足够的余额来完成该事务 否则银行将无法从你的账户余额中减去取款额 在所有这些操作都成功之后 你才能取到现金 无论什么原因(例如你取消了操作 或者银行取款机发生故障) 如果其中任何一个步骤失败 则所有的改变都必须回滚到事务之前的状态
在ANSI/ISO的SQL标准中定义了事务的模型 它规定事务以隐式方式开始 在成功执行了该事务的所有逻辑单元之后使用一个显式的MIT 或者当需要回滚未提交的变更时使用一个显式的ROLLBACK(例如当程序异常终止时) 绝大多数RDBMS都遵循这一事务模型
显式事务和隐式事务
在SQL标准中 将隐式事务作为默认的事务行为 这种方式过于小心谨慎了 无论何时 如果在会话期间执行了某些DDL和DML语句 RDBMS就会启动(或继续)一个事务 通过发出一条MIT语句或者一条ROLLBACK语句 就可以终止事务
显式事务是由客户端使用BEGIN TRANSACTION语句来启动的 并采用与隐式事务类似的办法 手动发出命令来终止事务 可以为显式事务定义一个名称 但这是可选的 为事务定义名称有助于更好地维护代码
例如 Microsoft SQL Server 提供了SETIMPLICIT_TRANSACTIONSON|OFF语句 用于配置事务的默认行为 如果该选项为ON 当声明了下列语句之一时 SQL Server将自动启动一个事务 ALTER TABLE CREATE DELETE DROP FETCH GRANT INSERT OPEN REVOKE SELECT TRUNCATETABLE和UPDATE 事务必须显式地提交 或者显式地回滚 一旦执行了前面所列的任何一个语句 就会启动一个新事务 将IMPLICIT_TRANSACTIONS选项调整为OFF 将返回到事务默认的自动提交事务模式
尽管并非SQL标准的要求 但在绝大多数RDBMS中 在任何DDL语句之前和之后都会隐式地发出一个MIT命令
返回目录 SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
cha138/Article/program/SQL/201311/16450相关参考
Hibernate基于JDBC的事务[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hib
保险代理合伙企业事务的执行(1)合伙企业事务执行的方式。合伙企业可以由全体合伙人共同执行合伙企业事务,这是比较常见的方式。在这种情况下,各合伙人都有权对外代表合伙企业,执行合伙企业事务。合伙企业也可以
JAVA设计模式之事务处理[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
用Microsoft.net实现数据库事务(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
会计事务所是干什么的?会计师事务所的职责一、审计业务1、年度会计报表审计、财务收支审计;2、厂长(经理)经济责任审计、承包经营者责任审计;3、企业解散、合并、破产审计、经济效益审计;4、专项经济项目审
行政管理工作包括行政事务管理、办公事务管理、人力资源管理三个方面
行政管理工作包括行政事务管理、办公事务管理、人力资源管理三个方面。_____答案:错误解析:企业行政管理广义上包括行政事务管理、办公事务管理、人力资源管理、财产会计管理四个方面。本题错误。
Spring声明式事务管理源码解读之事务提交 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 其实
Spring声明式事务管理源码解读之事务开始 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在s
有人说,工作的时候,我们要将重要事务放在主要位置。重要事务是必要条件,关系着一件事情成功与否。重要的事务没做好,一定不成
有人说,工作的时候,我们要将重要事务放在主要位置。重要事务是必要条件,关系着一件事情成功与否。重要的事务没做好,一定不成功。但是,细节也是很重要的,细节是成功的充分条件,同样也与一件事情成功与否相关。
事务概述 事务就是指作为单个逻辑工作单元执行的一组数据操作这些操作要么必须全部成功要么必须全部失败以保证数据的一致性和完整性事务具有ACID属性 原子性自然界最小的事务的内容要么都做要么都不做