日期:2014-05-16  浏览次数:20749 次

mysql数据库脚本事务如何控制?
我现在需要完成一个脚本用来完成对mysql数据库的操作,用到了事务,但是不知道出错后如何回滚,求指教!
下面是我的脚本中关于事务的部分:

#关闭事务自动提交
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "set AUTOCOMMIT=0"
#事务开始
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "start transaction"

中间部分是一些数据库的操作,如移表,删除等

#提交事务
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "commit"

我发现这样的话无论中间的数据库操作怎样事务都会提交,我不知道如何捕捉错误再进行回滚,望指点!
谢谢!


------解决方案--------------------
AUTOCOMMIT=0 这个仅是对当前SESSION的变量进行了设置,并没有改变所有的MYSQL事务设置。

而你的每一次 mysql -h${HOSTNAME} -P${PORT} -u${USERNAME}... 都是一个新的连接(SESSION)