2011-12-05 24 views
1

我有一個基於kohana 3.0.14的網站,我想在某些模型中使用交易。 什麼是最好的方法呢? 另外:我怎麼能使用多個表的事務? (我怎樣才能同時阻止多個表)? 現在我做:Kohana在多個表上的交易

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

你正在做的正確:) – matino

+0

可能重複的http://stackoverflow.com/questions/1546709/kohana-transaction-with-orm –

+0

好吧,我怎麼測試交易已完成(我的意思是這真的是一個交易)?謝謝 – dana

回答

3

Kohana 3顯然有交易方法,雖然他們似乎沒有記錄。請參閱this link

事務是數據庫級別的事務,因此無論涉及多少表,事務在啓動和提交之間執行的操作都是事務的一部分。

你不會說你正在使用哪個數據庫,但是如果你使用MySQL,請注意MySQL MyISAM表(最常見的類型)不支持事務 - 你需要使用InnoDB和MySql。

+0

好吧,如果我在所有的MyISAM表我如何我「轉換」他們InnoDB的?非常感謝 – dana

+3

[閱讀手冊](http://dev.mysql.com/doc/refman/5.6/en/converting-tables-to-innodb.html) –