十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
undolog呀,这里面记录了一个事务中,数据变动的历史。只要事务不提交,这个undolog里面就一直保留着数据变动的记录。
创新互联公司是专业的全州网站建设公司,全州接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行全州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
这些都用在事务中,就是可能有好几句语句放在一起执行,rollback的话一旦中间那条语句执行错误,那之前没错误语句的执行对数据库的修改都将无效,这也是保证了数据库的完整性,不用rollback的话那就前面改掉的就不会再恢复了
好像不支持事务回滚 mysql Max版支持 mysql_query('BEGIN');//开始事务 mysql_query('..........');//中间执行其他sql语句 mysql_query('COMMIT');//成功后提交事务 //mysql_query('ROLLBACK');//失败后回滚 上面不是php代码吗 就是用mysql_query执行而已 在当前mysql中虽然出现了事务的支持,但它还很不成熟,所以,呵呵,先观望事务吧,采取其他手段达到事务的效果 比如你想删除或更新一些记录,你可以创建一个临时表或者使用预先建立的备份表,将要将要操作的数据备份下来,当其他操作失败时将这些数据恢复回去。当然实际情况可能更复杂一些。这样做看起来很麻烦,而且效率值得怀疑,不过需要事务处理的地方应该不会很多,所以麻烦一次两次还是可以忍受的。 事务处理本身就不是一个高效的、百分百安全的手段,我们完全可以通过优化表的结构、编写有效的脚本而避免使用事务。关注我也关注
默认情况下,MySQL采用autocommit模式运行。这意味着,当执行更新表的语句之后,MySQL立刻把更新存储到磁盘中。
事务安全型的存储引擎(如InnoDB, BDB或NDB簇),
使用以下语句禁用autocommit模式:
SET AUTOCOMMIT=0;
使用START TRANSACTION,autocommit仍然被禁用,直到COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。
mysql select * from test_main //
+----+-------+
| id | value |
+----+-------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+----+-------+
3 rows in set (0.00 sec)
mysql START TRANSACTION;
- //
Query OK, 0 rows affected (0.00 sec)
mysql INSERT INTO test_main VALUES(4, 'FOUR') //
Query OK, 1 row affected (0.00 sec)
mysql INSERT INTO test_main VALUES(4, 'FOUR') //
ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
mysql ROLLBACK//
Query OK, 0 rows affected (0.01 sec)
mysql select * from test_main //
+----+-------+
| id | value |
+----+-------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+----+-------+
3 rows in set (0.00 sec)