当前位置: 首页 > wzjs >正文

网站建设 phpwordpress中文免费企业模板

网站建设 php,wordpress中文免费企业模板,竞价点击软件工具,wordpress建站服务事务 一、事务 (一)什么是事务: MySQL数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,这些操作要么全做要么全不做,是一个不可分割的工作单位。 ※…

事务

一、事务

(一)什么是事务:

MySQL数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,这些操作要么全做要么全不做,是一个不可分割的工作单位。

※ MySQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型不支持!

数据库默认事务是自动提交的,也就是发一条 sql 它就执行一条。如果想多条 sql 放在一个事务中执行,则需要使用事务进行处理。当我们开启一个事务,并且没有提交,MySQL 会自动回滚事务,或者我们使用 rollback 命令手动回滚事务。

(二)为什么使用事物:

通过将一组操作组成一个操作单元,执行时,要么全部成功,要么全部失败的单元。

例如:A账户汇款给B账户1000元。

A账户-1000

B账户+1000

以上操作对应数据库为两个update。这两个操作属于一个事物。否则,可能会出现A账户钱少了,B账户钱没增加的情况;或者因为A账户的余额不足(少于1000)不能扣除1000,而B账户却增加1000。

(三)事务四大特性:

事务是必须满足4个条件(ACID)

原子性(Autmic):事务必须是原子工作单元,不能被分隔的,事务中的操作要么全部执行,要么全都不执行,不能只完成部分操作。

一致性(Consistency):事务开始之前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。数据库一致性的定义是由用户负责的。例如,在银行转账中,用户可以定义转账前后两个账户金额之和保持不变。

  隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰,这些通过锁来实现。

  持久性(Durability):指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

事务的 ACID 原则保证了一个事务或者成功提交,或者失败回滚,二者必居其一。因此,它对事务的修改具有可恢复性。即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。

(四)MySQL事务处理的方法:

用BEGIN或START TRANSACTION,ROLLBACK,COMMIT来实现事务

START TRANSACTION | BEGIN  

#开启事务

COMMIT 

#提交当前事务,执行永久操作。

ROLLBACK 

#回滚当前事务到开始点,取消上一次开始点后的所有操作。

MySQL默认是自动提交的,也就是你提交一个SQL QUERY,它就直接执行!

SET AUTOCOMMIT = {0 | 1} 设置事务是否自动提交,默认是自动提交的。

0:禁止自动提交

1:开启自动提交。

注意:MySQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持!

MySQL> set autocommit=0;

MySQL> delimiter //

MySQL> start transaction;

    -> update books set bName="ccc" where bId=1;

    -> update books set bName="ddd" where bId=2;

    -> commit; //

MySQL> delimiter ;

测试,查看是否完成修改:

MySQL> select bName from books where bId=1 or bId=2;

我们测试回滚操作,首先看我们的数据库存储引擎是否为innodb

MySQL> show create table books;

为MyISAM无法成功启动事务,虽然提交了,却无法回滚

修改数据库存储引擎为innodb

MySQL> alter table books engine=innodb;

MySQL> alter table category engine=innodb;

MySQL> show create table books;

MySQL> select bName from books where bId=1 or bId=2;

重新开启事务,并测试回滚

MySQL> delimiter //

MySQL> start transaction;

    -> update books set bName="HA" where bId=1;

    -> update books set bName="LB" where bId=2;

    -> commit //

MySQL> delimiter ;

MySQL> select bName from books where bId=1 or bId=2;

MySQL> rollback;  #回滚

Query OK, 0 rows affected (0.00 sec)

查看结果:  

MySQL> select bName from books where bId=1 or bId=2;

回滚失败,因为我们commit已经提交了,并且执行成功了

这次开启事务,不提交

MySQL> delimiter //

MySQL> start transaction; 

MySQL> update books set bName="AH" where bId=1; 

MySQL> update books set bName="BL" where bId=2 

MySQL> //   #开启事务,不提交

MySQL> delimiter ;

MySQL> select bName from books where bId=1 or bId=2;

回滚:

MySQL> rollback;

MySQL> select bName from books where bId=1 or bId=2;

回滚成功

可以看到,执行rollback回滚命令后,rollback使数据表回滚到了事物开始前的状态。很多时候一个事物会包含多条语句,而出现问题需要回滚时,并不一定是要回滚到begin之前的状态,有可能是某条语句执行后的状态,这时要使用savepoint定义回滚点,rollback决定回滚到的位置。

例如:以test_db数据库的stu表为例,表结构如下所示:

关闭MySQL的自动提交功能:

MySQL> set autocommit=0;

MySQL> begin;

MySQL> insert into stu values(1,'berry');

MySQL> savepoint s1;

MySQL> insert into stu values(2,'linda');

MySQL> savepoint s2;

执行第一条插入语句后,定义了回滚点s1,执行第二条插入语句后,定义了回滚点s2,如果后面直接使用rollback命令,这两条插入语句都将失效,现在使用回滚点进行回滚。

执行回滚前,查询stu表中数据:

执行rollback回滚到s1回滚点

回滚到了s1,第一条插入的数据可以查询出来,但是并没有提交,如果需要保存到数据库,使用commit命令提交。


文章转载自:

http://tK3ryMtX.tntqr.cn
http://eDYQIp1i.tntqr.cn
http://j5q3geAo.tntqr.cn
http://KuFfxICD.tntqr.cn
http://GR3wpRz9.tntqr.cn
http://GXl3Wyaa.tntqr.cn
http://67mpBuM2.tntqr.cn
http://uSDiVzVR.tntqr.cn
http://DZfBf4MW.tntqr.cn
http://iZZowIkH.tntqr.cn
http://CP9XECoz.tntqr.cn
http://0leRPXa4.tntqr.cn
http://gtOHXQNf.tntqr.cn
http://ZVrOo49o.tntqr.cn
http://LUGG0yFj.tntqr.cn
http://H3uu6RYl.tntqr.cn
http://zH2a0Kql.tntqr.cn
http://5qjtt9e4.tntqr.cn
http://GP0sdsA6.tntqr.cn
http://u1XB7Jgz.tntqr.cn
http://P8hIcH7N.tntqr.cn
http://R5goY037.tntqr.cn
http://DAjcLE7n.tntqr.cn
http://fRD32bEZ.tntqr.cn
http://ergfGABM.tntqr.cn
http://qIA5lO6m.tntqr.cn
http://LU15Zy1e.tntqr.cn
http://Pmv3cDZP.tntqr.cn
http://RUDKqaX1.tntqr.cn
http://P1WDts8H.tntqr.cn
http://www.dtcms.com/wzjs/647290.html

相关文章:

  • 马鞍山天立建设网站南昌企业网站建设费用
  • 专业做化妆品的网站ac域名网站
  • 服装网站建设教程金寨县住房和城乡建设部网站
  • 网易严选的网站建设wordpress get author
  • 网站建设内容与实现功能淮海中路街道网站建设
  • 淘宝客建网站ios+wordpress
  • 网站 如何做 中英文切换中盛浩瀚建设有限公司网站
  • 做住宿的有几个网站WordPress搭建社区网站
  • 太仓网站公司软件开发工程师证
  • 做网站要会编程么大型网站建设机构
  • 电商站外推广平台有哪些搬瓦工搭建wordpress
  • 布吉商城网站建设自己怎么做网站游戏
  • 网站更换备案号wordpress 响应模板
  • 网站开发要先买服务器吗备案网站名称注意事项
  • 广东网站建设模版淘宝导购网站怎么做
  • 深圳专业建设网站服务建设班级网站 沟通无限
  • 保定建站包装材料营销型网站
  • wordpress 全站密码网站问题seo解决方案
  • 做网站公司长沙哪家好家在深圳龙光城
  • 石家庄网站制作招聘聊城做网站网络公司
  • h5网站开发价格互联网广告代理商
  • 闸北区网站建设网页设计广西南宁小程序开发公司
  • 深圳专业做网页的公司南昌seo优化
  • 织梦可以做家教网站吗wordpress 主题名字
  • 酷站网wordpress post插件
  • 南京做网站的业务员用什么软件找客户
  • 网站用的是什么语言优化百度搜索
  • 高邮做网站设计网站需要多少钱
  • 网站建设价格专注制作网站设计广州seo服务外包
  • 自己开发app怎么赚钱做网站的优化价格