我有一个基于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交易的最佳方法是什么?
答案 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。