2010-08-16 5 views
4

J'ai ce schéma dont j'ai besoin pour définir deux clés primaires; l'un est le champ "vid" de Drupal et l'autre est le champ "enchère" de mon site qui est de type incrémentation automatique qui à son tour nécessite d'être une clé primaire: dans le cas contraire, j'ai une erreur MySQL. Je n'arrive pas à trouver de syntaxe pour définir plusieurs clés primaires dans un schéma Drupal. Si quelqu'un peut m'aider avec la syntaxe, je l'apprécie à peu près.Plusieurs clés primaires dans un schéma

$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

Etes-vous plus précis? Qu'est-ce qui ne fonctionne pas? –

+0

Je ne suis pas sûr qu'il soit possible de définir plusieurs clés primaires. En fait, je suis sûr que ce n'est pas possible. Vous pouvez * définir * une seule clé primaire composée de plusieurs colonnes, mais il est possible que Drupal n'ait aucune syntaxe pour l'exprimer ... –

+0

@Mark Trapp: Je recevais une erreur mysql. J'ai essayé encore une fois après avoir été suggéré par le membre Dave et ça marche à nouveau. J'ai probablement fait une erreur quelque part. – Andrew

Répondre

8

L'utilisation de ce qui suit a bien fonctionné pour moi. Peut-être que c'est une limitation spécifique à la version de MySQL? Pouvez-vous signaler le message d'erreur réel que vous avez reçu lorsque Drupal a essayé de créer cette table?

$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'), 
); 
+0

Cela fonctionne à nouveau. Sentez-vous comme stupide maintenant. Je ne sais vraiment pas où j'ai fait erreur quand j'ai essayé cette syntaxe. J'ai continué à obtenir l'erreur de syntaxe mysql. Merci beaucoup dave. – Andrew

Questions connexes