2011-07-28 2 views
0

Si j'ai une table créée de façon similaire à ce qui suit:Get MySQL Unique Key Combos

CREATE TABLE MyTable(
    id1Part1 INT NOT NULL, 
    id1Part2 INT NOT NULL, 

    id2Part1 INT NOT NULL, 
    id2Part2 INT NOT NULL, 

    UNIQUE KEY (id1Part1, id1Part2), 
    UNIQUE KEY (id2Part1, id2Part2) 
); 

comment puis-je demander maintenant la base de données de me donner les deux "clés uniques" tuples?
(SHOW INDEX ne semble pas le faire.)

Répondre

1

Je ne sais pas si vous cherchez quelque chose comme ça

select 
constraint_name, 
group_concat(column_name order by ordinal_position) as cols 
from information_schema.key_column_usage 
where table_schema = 'db_name' and table_name = 'table_name' 
group by constraint_name 
+0

Hm ... Je vais essayer de le vérifier quand j'en aurai l'occasion, merci. On dirait que c'est peut-être ce dont j'ai besoin. – Mehrdad

1

MySQL ne peut pas vous donner deux clés primaires. Check this out:

mysql> CREATE TABLE MyTable(
    ->  id1Part1 INT NOT NULL, 
    ->  id1Part2 INT NOT NULL, 
    -> 
    ->  id2Part1 INT NOT NULL, 
    ->  id2Part2 INT NOT NULL, 
    -> 
    ->  UNIQUE KEY (id1Part1, id1Part2), 
    ->  UNIQUE KEY (id2Part1, id2Part2) 
    ->); 
Query OK, 0 rows affected (0.17 sec) 

mysql> desc mytable; 
+----------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+----------+---------+------+-----+---------+-------+ 
| id1Part1 | int(11) | NO | PRI | NULL |  | 
| id1Part2 | int(11) | NO | PRI | NULL |  | 
| id2Part1 | int(11) | NO | MUL | NULL |  | 
| id2Part2 | int(11) | NO |  | NULL |  | 
+----------+---------+------+-----+---------+-------+ 

Il montre qu'il n'y a qu'une seule clé primaire.

+0

Je suis confus ... est-ce qu'on parle de clés * uniques * ou * primaires *? – Mehrdad