我有一个关于 MySQL 的问题,但一直找不到答案。我知道自动提交在 MySQL 中默认是打开的。我需要在一个事务中从命令行运行一些更新查询,但我不知道 MySQL 将如何处理它们。如果我有这样的事情:
mysql -uroot -proot -e 'QUERY 1; QUERY 2; QUERY3'
它会作为一个事务执行还是 MySQL 会单独自动提交每个语句?我需要确保原子性。
我有一个关于 MySQL 的问题,但一直找不到答案。我知道自动提交在 MySQL 中默认是打开的。我需要在一个事务中从命令行运行一些更新查询,但我不知道 MySQL 将如何处理它们。如果我有这样的事情:
mysql -uroot -proot -e 'QUERY 1; QUERY 2; QUERY3'
它会作为一个事务执行还是 MySQL 会单独自动提交每个语句?我需要确保原子性。
您可以使用 MySQL 的START TRANSACTION
语法来创建事务提交:
来源:http ://dev.mysql.com/doc/refman/5.0/en/commit.html
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
您还可以将查询写入 .sql 文件,并将其通过管道传输到 mysql:
$ cat query.sql | mysql -uroot -proot
管道是个好主意!
echo "START TRANSACTION;" > start.sql
echo "COMMIT;" > commit.sql
cat start.sql yourScript.sql commit.sql | mysql -uroot -proot
或者
cat start.sql yourScript.sql - | mysql -uroot -proot
因此,您可以根据 yourScript 的结果手动提交 o 回滚
祝你好运!