在MyISAM存储引擎下写的服务器代码和SQL语句,可以不通过任何修改,移植到InnoDb存储引擎下吗?
解决方案 »
- 200w的数据,问下相关查询效率的问题。
- 关于mysql游标取值为空的问题
- MySQL安装配置优化问题
- 如何写mysql的备份批处理?
- mysql root密码丢失,有一个用户,只有其中一个库的权限。。。。
- mysql查询问题
- 如果更改了my.ini中的datadir参数是否要同时移动mysql库?mysql库中的各个表都是干什么的?
- 安装mysql-connector-net-6.6.4 总是失败 your system has not been mofifiel
- musql创建存储过程报错
- Sql语句,当在页面插入一个字段的时候,和数据库中的表字段进行对比,有这个名字就数量相加
- MYSQL怎么判断外键关系是否存在?
- 求助:请教一个SQL 查询语句问题
innodb支持事务,如果出错,数据库自己会回滚吗,不需要我们特殊写SQL语句来处理的?
03 mysql>
04 mysql> CREATE PROCEDURE myProc(
05 -> in_from INTEGER,
06 -> in_to INTEGER,
07 -> in_amount DECIMAL(8,2))
08 -> BEGIN
09 ->
10 -> DECLARE txn_error INTEGER DEFAULT 0 ;
11 ->
12 -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN
13 -> SET txn_error=1;
14 -> END;
15 ->
16 -> SAVEPOINT savepoint_tfer;
17 ->
18 -> UPDATE employee
19 -> SET salary=in_amount
20 -> WHERE id=in_from;
21 ->
22 -> IF txn_error THEN
23 -> ROLLBACK TO savepoint_tfer;
24 -> SELECT 'Transfer aborted ';
25 -> ELSE
26 -> UPDATE employee
27 -> SET salary=in_amount
28 -> WHERE id=in_to;
29 ->
30 -> IF txn_error THEN
31 -> ROLLBACK TO savepoint_tfer;
32 -> SELECT 'Transfer aborted ';
33 -> END IF;
34 -> END IF;
35 ->
36 -> END$$
37 Query OK, 0 rows affected (0.00 sec)
你看我理解的对不对,innodb
你看我理解的对不对,innodb是支持事务的,你可以在存储过程里调用回滚的相关操作,如果出错了,会回滚到你需要的位置。如果你在存储过程里不写回滚的相关操作,即使出了错数据库也不会有回滚操作的?
如果MYISAM出现异常回滚,那MYISAM和innodb在是否支持事务就没有什么区别了吧?
在一个事务中,如果混合使用事务性表和非事务性表,假如事务处理一切顺利,那么结果也会正常。但是,如果事务须回滚,那么在非事务性表上做的修改将无法取消。这将导致数据库处于数据不一致的状态,在这种状态下,很难对数据进行恢复,并且事务会变得悬而未决。上面是不是说发生异常时,MyISAM的表是不回滚的?