【问题标题】:Multiple primary keys in a schema架构中的多个主键
【发布时间】:2010-08-16 21:34:07
【问题描述】:

我有这个架构,我需要定义两个主键;一个是 Drupal 的 'vid' 字段,另一个是我的站点 'bid' 字段,它是自动递增类型的,这反过来又要求它是主键:否则我会收到 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;
}

【问题讨论】:

  • 你能说得更具体点吗?什么不起作用?
  • 我不确定是否可以定义多个主键。事实上,我确信这是不可能的。您可以定义由多个列组成的单个主键,但 Drupal 可能没有任何语法来表达...
  • @Mark Trapp:我遇到了 mysql 错误。在成员 Dave 的建议下,我再次尝试了它,它又可以工作了。可能我在某个地方犯了错误。

标签: drupal primary-key drupal-schema


【解决方案1】:

使用以下内容对我来说效果很好。也许这是特定于 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'),
);

【讨论】:

  • 它又开始工作了。现在觉得自己很傻。当我第一次尝试这种语法时,我真的不知道我在哪里犯了错误。我不断收到mysql语法错误。非常感谢戴夫。
猜你喜欢
  • 2011-07-11
  • 2022-08-18
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多