MySql命令行控制事务

新建表t1

CREATE TABLE `t1` (
  `a` int(11) NOT NULL,
  `b` int(11) DEFAULT NULL,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

查看mysql系统级别的事务隔离级别:

mysql> SELECT @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ       |
+-----------------------+
1 row in set (0.00 sec)

查看mysql会话级别的事务隔离级别

mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

mysql> SELECT @@session.tx_isolation;
+------------------------+
| @@session.tx_isolation |
+------------------------+
| REPEATABLE-READ        |
+------------------------+
1 row in set (0.00 sec)

设置系统级别的事务隔离级别

mysql> set global transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED        |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

设置会话级别的事务隔离级别

mysql> set session transaction isolation level read committed;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED        |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)

mysql默认是自动提交事务的,查看autocommit变量

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.01 sec)

设置mysql不自动提交事务

mysql> set autocommit = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
1 row in set (0.01 sec)

使用rollback回滚事务

mysql> select * from t1;
Empty set (0.00 sec)

mysql> insert into t1 values (51, 3000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+----+------+
| a  | b    |
+----+------+
| 51 | 3000 |
+----+------+
1 row in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.03 sec)

mysql> select * from t1;
Empty set (0.00 sec)

mysql>

使用start transaction;或begin;显示的开启一个事务

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values (51, 3000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+----+------+
| a  | b    |
+----+------+
| 51 | 3000 |
+----+------+
1 row in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.04 sec)

mysql> select * from t1;
Empty set (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
Empty set (0.00 sec)

使用savepoint在事务中创建一个保存点(可以在一个事务中创建多个保存点)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values (51, 3000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+----+------+
| a  | b    |
+----+------+
| 51 | 3000 |
+----+------+
1 row in set (0.00 sec)

mysql> savepoint tx1;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values (52, 3000);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;
+----+------+
| a  | b    |
+----+------+
| 51 | 3000 |
| 52 | 3000 |
+----+------+
2 rows in set (0.00 sec)

mysql> rollback to tx1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+----+------+
| a  | b    |
+----+------+
| 51 | 3000 |
+----+------+
1 row in set (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.04 sec)

以上是mysql命令行是对事务隔离级别和事务提交的基本操作。现在说明以下操作基于可重复复读的隔离级别,事务不自动提交。

mysql> set global transaction isolation level repeatable read;
Query OK, 0 rows affected (0.00 sec)

mysql> set session transaction isolation level repeatable read;
Query OK, 0 rows affected (0.00 sec)

mysql> set autocommit = 0;
Query OK, 0 rows affected (0.00 sec)

====END====

MySql命令行控制事务

时间: 2024-10-10 18:37:32

MySql命令行控制事务的相关文章

MySql命令行命令和SQL语句

一.常用mysql命令行命令 1.启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2.netstat -na|findstr 3306 查看被监听的端口,findstr用于查找后面的端口是否存在 3.在命令行中登录MYSQL控制台,即使用MYSQL COMMEND LINE TOOL 语法格式 mysql -user=root  -password=123456  db_name 或者简写格式 mysql -uroot -p123456 db

mysql 命令行操作命令

mysql 安装 连接 导入数据 导出数据 crud 常用函数:count, avg, max, min, length RDBMS 关系型数据库管理系统 图: mysql 安装 linux 服务端 sudo apt-get install mysql-server sudo service mysql start 启动数据库服务器 ps ajx|grep mysql 查看服务器是否启动 sudo service mysql stop sudo service mysql restart 位置:

mysql命令行备份方法

1.备份命令 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb > /data/backup/cmdb.sql 2.备份压缩 导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名

mysql命令行下创建和删除索引简介

mysql命令行下创建和删除索引简介: mysql中创建索引可以使用CREATE TABLE语句,也可以用CREATE INDEX或ALTER TABLE来给表增加索引.索引的删除可以使用ALTER TABLE或DROP INDEX语句来实现. (1)使用ALTER TABLE语句创建索引.语法如下:alter table table_name add index index_name (column_list) ;alter table table_name add unique (colum

mysql命令行导入sql脚本中文变问号问题

之前一直用工具连接mysql虽然小问题不断也都无伤大雅,最近做金融云项目,只能通过服务器的内网访问数据库,也就是说只能在linux下通过命令行访问,在导入中文的时候发现都变成问号了,经过查询资料解决,特此记录一下思路. 1.检查sql脚本文件是否unicode编码,打开查看是脚本文件中中文是否能正常显示. 2.检查所建好的数据库是否采用utf8编码. 3.在mysql命令行下执行status检查Server characterset和Client characterset编码是否一致(我就是这一

如何使用mysql命令行

现在向大家介绍mysql命令行下,从数据库的建立到表数据的删除全过程,希望对网友有所帮助 方法/步骤 1.登陆mysql 打cmd命令终端,如果已经添加了mysql的环境变量,可以直接使用命令 mysql -uroot 直接回车,之后按提示输入密码, 如果未添加mysql的环境变量,可以切换到mysql的安装目录下的bin目录,再使用 mysq -uroot 你也可以手动为mysql添加环境变量.这里就不介绍怎么添加环境变量的方法了 密码输入正确之后,就会出现“Welcome to the My

mysql命令行参数

一,mysql命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 --auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash //默认状态是没有自动补全功能的.-A就是不要自动补全功能 -B, --batch //ysql不使用历史文件,禁用交互 (Enables --silent

mysql命令行,多行命令时如何取消/返回修改前边的命令

mysql命令行中执行多行命令时,如果前边输入的命令发生错误,是无法返回修改的,但是可以通过输入\c来取消前边的输入,但是这时如果前边输入的东西很多,直接取消又很可惜的话,可以通过\p来打印出前边的命令,复制下来去修改,然后输入\c取消来重新输入命令. Example 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql> select 8 from a     -> where 1=1     ->  and 1=0     -> \p #输入\p后,打印出了前

Mysql命令行基本操作

本文记录的是windows7系统下Mysql的命令行基本操作. 一.Mysql启动与登录 1. Mysql启动: 通过运行mysql安装目录下的/bin/mysqld.exe文件来启动Mysql服务.在命令行中进入mysql安装目录下的bin目录,执行命令: mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"(指定配置文件,配置文件的位置根据具体情况而定) 即可启动mysql服务.为了以后开启m