大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
事务就是指对数据库的多次修改,要么全部成功,要么全部失败,不能出现部分修改成功,部分修改失败的情况。
专注于为中小企业提供成都网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业马尾免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
PHP下操作mysql数据库要实现事务提交,需注意以下方面:
1, 数据库表存储引擎类型设置为innoDB。默认的mysql表采用MYISAM引擎,是不支持事务的,因此要采用以下语句变更:
mysql alter table ‘table_name’ engine=innodb;
2,PDO对象设置要设置errmode为Exception,否则第16行SQL执行出错,语句也不会跳到catch段去rollback, 而是继续向下执行直到commit。
默认情况下, MySQL启用自动提交模式(变量autocommit为ON)
如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果都没加,默认是session。
全局变量作用域:服务器每次启动将为所有的全局变量赋初始值,修改全局变量针对于所有的会话(连接)有效,但不能跨重启(重启服务器全局变量恢复为默认值)。
会话变量作用域:仅仅针对于当前会话(连接)有效
查询会话事务提交模式:
show session variables like 'autocommit';
查询全局事务提交模式:
show global variables like 'autocommit';
Value的值为ON,表示autocommit开启。OFF表示autocommit关闭。
set global autocommit=0;
set SESSION autocommit=0;
禁止自动提交
SET AUTOCOMMIT=0
开启自动提交:
SET AUTOCOMMIT=1
查询 正在执行的事务:
SELECT * FROM information_schema.INNODB_TRX
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
结束正在执行的事务:
使用mysql命令杀掉线程:kill 线程id (trx_mysql_thread_id)
手动提交模式:
BEGIN;
SQL;
COMMIT;
提交一个事务示例
回滚一个事务示例
主要是看@@autocommit 值
提交一个事务示例
回滚一个事务示例