2011-08-15 66 views
0

舉例來說,如果我有這樣的事情:Zend可以在MyISAM表上執行外鍵約束嗎?

class Application_Model_DbTable_Events extends Zend_Db_Table_Abstract 
{ 
    protected $_name = 'events'; 
    protected $_dependentTables = array('UsersEvents'); 

    protected $_referenceMap = array(
     'Creator' => array(
      'columns'   => 'created_by', 
      'refTableClass'  => 'Users', 
      'refColumns'  => 'ID' 
    ), 
); 
... 

我想這聽起來很樂觀,但Zend公司能夠確保CREATED_BY上插入某種方式在用戶表存在嗎?

+0

爲什麼你不試試看,(會自己嘗試,但沒有在這臺機器上的PHP)?我有一種感覺,它不會強制約束,但你永遠不知道。 – Phil

+0

@菲爾,我已經試過了,我無法讓它工作。忘了提到這一點。 – grm

回答

1

這是目前不可能的。

Zend目前可以幫助支持的唯一類型的參照完整性是級聯刪除和級聯更新。正如手冊所引用的那樣,當使用MySql的MyISAM表類型而不是InnoDB時,會使用這個例子。

Zend沒有強制執行外鍵檢查。但是,通常情況下,您可以將約束條件放入將要處理此事的數據庫中。

如果你的環境不允許這樣做,那麼理想情況是你擴展了Zend框架來爲你做這些檢查,儘管從PHP執行檢查將代價很高。