概述
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。 BEGIN 开始一个事务 SET AUTOCOMMIT=0 禁止自动提交 PHP中使用事务实例 MySQL ORDER BY 测试: 引自菜鸟教程 https://www.runoob.com/mysql/mysql-transaction.htmlMySQL 事务
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert,update,delete 语句
一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。事务控制语句:
MYSQL 事务处理主要有两种方法:
1、用 BEGIN, ROLLBACK, COMMIT来实现
ROLLBACK 事务回滚
COMMIT 事务确认2、直接用 SET 来改变 MySQL 的自动提交模式:
SET AUTOCOMMIT=1 开启自动提交
事务测试mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_transaction_test( id int(5)) engine=innodb;
# 创建数据表
Query OK, 0 rows affected (0.04 sec)
mysql> select * from runoob_transaction_test;
Empty set (0.01 sec)
mysql> begin;
# 开始事务
Query OK, 0 rows affected (0.00 sec)
mysql> insert into runoob_transaction_test value(5);
Query OK, 1 rows affected (0.01 sec)
mysql> insert into runoob_transaction_test value(6);
Query OK, 1 rows affected (0.00 sec)
mysql> commit; # 提交事务
Query OK, 0 rows affected (0.01 sec)
mysql>
select * from runoob_transaction_test;
+------+
| id
|
+------+
| 5
|
| 6
|
+------+
2 rows in set (0.01 sec)
mysql> begin;
# 开始事务
Query OK, 0 rows affected (0.00 sec)
mysql>
insert into runoob_transaction_test values(7);
Query OK, 1 rows affected (0.00 sec)
mysql> rollback;
# 回滚
Query OK, 0 rows affected (0.00 sec)
mysql>
select * from runoob_transaction_test;
# 因为回滚所以数据没有插入
+------+
| id
|
+------+
| 5
|
| 6
|
+------+
2 rows in set (0.01 sec)
mysql>
<?php
$dbhost = 'localhost:3306';
// mysql服务器主机地址
$dbuser = 'root';
// mysql用户名
$dbpass = '123456';
// mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
mysqli_select_db( $conn, 'RUNOOB' );
mysqli_query($conn, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行
mysqli_begin_transaction($conn);
// 开始事务定义
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(8)"))
{
mysqli_query($conn, "ROLLBACK");
// 判断当执行失败时回滚
}
if(!mysqli_query($conn, "insert into runoob_transaction_test (id) values(9)"))
{
mysqli_query($conn, "ROLLBACK");
// 判断执行失败时回滚
}
mysqli_commit($conn);
//执行事务
mysqli_close($conn);
?>
最后
以上就是开心音响为你收集整理的MYSQL事务(事务(Transaction)补充)-Yii与数据库-(5.2.1)深入理解YII2.0MySQL 事务的全部内容,希望文章能够帮你解决MYSQL事务(事务(Transaction)补充)-Yii与数据库-(5.2.1)深入理解YII2.0MySQL 事务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复