我有一个关于MySQL的问题,并且一直无法找到答案。我知道默认情况下,自动提交在MySQL中处于打开状态。我需要在一个事务中从命令行运行一些更新查询,但我不知道MySQL如何处理它们。如果我有这样的事情:MySQL命令行和事务
mysql -uroot -proot -e 'QUERY 1; QUERY 2; QUERY3'
将执行作为一个事务或将MySQL的独立自动提交每个语句?我需要确保原子性。
我有一个关于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 [email protected] 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
好运气的结果,通过手工提交Ø回滚!