2012-02-28 68 views
0

我需要在一个项目中使用的交易和它的接缝,他们只是想不工作Mysql的交易:d 在Navicat的编辑,我写这几行:没有效果

SET autocommit=1; 
BEGIN; 

select * from product where deleted=0 and name='Juice Coke'; 

insert into product(name, fk_category, fk_packaging, fk_stock, active, decimals, price, has_special_price, special_price_description, added_date, deleted) 
values ('qaaaJuice Coke','2','4','1','1','2','100.244','1','DESC SPECIAL PRICE','2012-02-28 08:26:47', 0); 

select * from product where deleted=0 and name='Juice Pepsi'; 
ROLLBACK; 
/*COMMIT;*/ 

但是它不会使回退并将插入保留在表格中。 我是否需要对数据库属性进行一些更改,或者您为什么认为它不起作用? 谢谢,阿德里安

+0

什么是产品表的存储引擎?交易目前仅支持InnoDB。 – Mchl 2012-02-28 06:56:47

+0

是MyIsam,只有innoDb啊......好的,谢谢我现在要修改 – 2012-02-28 07:00:22

回答

2

在随MySQL发货的存储引擎中,InnoDB表当前支持事务。将表格的存储从MyISAM更改为InnoDB

1

嘿。你应该禁用自动提交。

SET autocommit=0; 
+0

'BEGIN;'禁用自动提交(无论如何默认设置为1) – Mchl 2012-02-28 07:26:46

1

您在第一行启用了自动提交功能。只要数据库表以任何方式更新,它都会立即完成事务。将其设置为SET autocommit = 0; 和你的交易应该没问题!