架构中有多个主键

时间:2010-08-16 21:34:08

标签: drupal primary-key drupal-schema

我有这个架构,我需要定义两个主键;一个是Drupal的'vid'字段,另一个是我的网站'bid'字段,它是自动增量类型,反过来要求它是一个主键:wtherwise我得到MySQL错误。我在查找Drupal模式中定义多个主键的语法时遇到了麻烦。如果有人能帮我解决语法问题,我非常感激。

$schema['rft'] = array(
    'fields' => array(
        'vid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'nid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'bid' => array(
            'type' => 'serial',
            'size' => 'medium',
            'not null' => TRUE,                         
        ),

    ),
    'indexes' => array(
        'nid' => array('nid'),
    ),
    'primary key' => array('vid'),  //array('vid','bid') doesn't work
);

return $schema;
}

1 个答案:

答案 0 :(得分:8)

使用以下工作对我来说很好。也许这是MySQL版本特有的限制?你可以报告Drupal试图创建这个表时得到的实际错误消息吗?

$schema['rft'] = array(
    'fields' => array(
        'vid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'nid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'bid' => array(
            'type' => 'serial',
            'size' => 'medium',
            'not null' => TRUE,                         
        ),

    ),
    'indexes' => array(
        'nid' => array('nid'),
    ),
    'primary key' => array('vid', 'bid'),
);