Zend可以在MyISAM表上强制执行外键约束吗?

时间:2011-08-15 23:39:09

标签: zend-framework zend-db-table

例如,如果我有这样的事情:

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能否确保在插入的Users表中以某种方式存在created_by?

1 个答案:

答案 0 :(得分:1)

目前无法做到这一点。

Zend当前可以帮助支持的唯一一种引用完整性是级联删除和级联更新。如手册所引用的那样,当使用MySql的MyISAM表类型而不是InnoDB时,可以使用它。

Zend不强制执行外键检查。但是,通常情况下,您可以将约束放入DB中来处理这个问题。

如果您的环境不允许这样,那么理想的情况是扩展Zend框架以便为您进行这些检查,尽管从PHP进行检查会很昂贵。