首页 / MYSQL / MySQL事务(一)
MySQL事务(一)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL事务(一),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2532字,纯文字阅读大概需要4分钟。
内容图文
一、基本介绍
事务就是一组dml语句,这些语句存在逻辑上的相关性,这一组dml语句要么全部成功,要么全部失败,是一个整体。ACID属性(原子性,一致性,隔离性,持久性);mysql提供一种机制,保证我们可以达到这样的效果。事务还规定了不同的客户端看到的数据是不相同的, 举例说明:
说明:
默认情况下,MySQL是自动提交的;
start transaction 或 begin 语句开始一项新的事务
commit 和 rollback 用来提交或回滚事务
chain 和 release子句分别用来定义在事务提交或者回滚之后的操作,chain会立即启动一个新事务,并且和刚才的事务具有相同的隔离级别,release则会断开和客户端的链接;语句 commit and chain; 提交后立即开始一个新的事务
set autocommit 可以修改当前链接的提交方式,如果设置了set autocommit=0,则设置之后的所有事务都需要通过明确的命令进行提交或回滚
默认情况下只对提交的事务记录到二进制的日志中。
所有的DDL语句是不能回滚的,并且部分的DDL语句会造成隐式的提交。
默认情况下,表锁和行锁都是自动获得的,不需要额外的命令。
lock tables 表名 [read|write] ; 锁定当前线程的表,若表被其他线程锁定,则当前线程会等待;
unlock tables释放当前线程获得的任何锁定
在所锁表期间,用start transaction命令开始一个新事务,会造成一个隐含的unlock tables被执行。
二、如何在mysql控制台使用事务
1、创建一张表
2、事务的基本使用
开始一个事务
start transaction;
做了一个保存点
savepoint 保存点名;
这里进行了各种操作[update, delete , insert ......]
如果需要可以回退到保存点
rollback to 保存点名;
事务使用的注意事项:
当我们开始事务时,没有做保存点,我们也可以回退到事务开始的哪个时候的状态(前提是,这个事务还没有提交commit)。
当回退时,数据全部恢复到事务开始的时候.
如果一个事务被提交了(即 commit),则不可以再回退
我们事务中,可以有多个保存点,在回退的时候,可以选择回退到哪个保存点,同名后面的覆盖之前的定义。对于不需要的savepoint,通过release savepoint xxx;命令删除savepoint
innodb支持事务,而myisam不支持.
开始事务可以是 start transaction 也可以是 set autocommit= 0; 或者 begin;
Start transaction 开始事务,事务结束后自动回到自动提交方式,即set autocommit =1;
Start transaction 命令开启一个事务,会造成一个隐含的unlock tables被执行;
所有的DDL语句不能回滚,并且部分的DDL语句会造成隐式提交
通常情况下,只对提交的事务记录到二进制的日志中,但如果一个事务包含非事务类型的表,那么回滚操作也会被记录到二进制日志中,以确保非事务类型表的更新可以被复制到从数据库;
分布式事务的使用(了解)
三、如何在php程序中控制事务
在没有事务的时候,代码是如此这般
使用事务来控制这个问题.
内容总结
以上是互联网集市为您收集整理的MySQL事务(一)全部内容,希望文章能够帮你解决MySQL事务(一)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。