Kohana在多个表上进行交易

时间:2011-12-05 16:33:14

标签: php orm transactions kohana kohana-3

我有一个基于kohana 3.0.14的网站,我想在某些模型中使用交易。 什么是最好的方法? 另外:我如何在多个表上使用事务? (如何同时阻止多个表)? 现在我在做:

   DB::query(NULL, 'START TRANSACTION');            
        $contents = ORM::factory('basket_contents');
        $contents->product_type = $product_type;
        $contents->category = $product->category;
        $contents->basket = $this;
        $contents->save();
   DB::query(NULL, 'COMMIT');

但我想阻止2个表:篮子和内容。我不相信我这样做是对的。与Kohana 3交易的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

Kohana 3显然有交易方法,尽管它们似乎没有记录。见this link

事务是数据库级别的,因此无论涉及多少个表,在启动和提交之间执行的任何操作都是事务的一部分。

你没有说你正在使用什么数据库,但是如果你使用MySQL注意MySQL MyISAM表(最常见的类型)不支持事务 - 你需要使用InnoDB和MySql。

答案 1 :(得分:0)

我创建了一个Kohana模块,可以更轻松地使用事务:

https://github.com/brazzy/kohana-transactional

但它至少需要Kohana 3.1,当然MySQL也需要表来使用InnoDB。