MySQLデータベーステーブルで複合プライマリキーを識別する方法は?

StackOverflow https://stackoverflow.com/questions/2848528

質問

MySQLデータベーステーブルで複合プライマリキーを識別する方法は?また

編集2複合プライマリキーを含むテーブルのインディーズを表示するために、どのSQLクエリを使用する必要がありますか?

MySQLデータベースには2つまたは3つのプライマリキーの複合キーを備えているテーブルがたくさんあります。PHPMyAdminを使用しています。また、どのテーブルに複合キーがあるかを識別するためにPHPスクリプトをコーディングする必要があります。クエリを使用してテーブル

SHOW INDEXES FROM `".$row3['TABLE_NAME']."` WHERE Key_name = 'PRIMARY'

どちらが私に欲しいものを与えているのですが、今では、複合キーを持っているインデックスを見つけるにはどうすればよいですか?

編集1

ダニエルの画像のコンテキストで、phpmyadminの複合主キーの外観のコメント

複合プライマリキーは、phpmyadminでこのように見えます。alt text

役に立ちましたか?

解決

アップデート:

更新された質問にさらに、PHPスクリプトで以下を使用することをお勧めします。

SELECT COUNT(*) num_keys 
FROM   information_schema.KEY_COLUMN_USAGE     
WHERE  table_name ='tb' AND constraint_name = 'PRIMARY';

このクエリは返されます num_keys > 1テーブルの場合 tb 複合プライマリキーがあります。


あなたが達成しようとしていることを理解したかどうかはわかりませんが、あなたは使用を検討したいかもしれません SHOW INDEX 次のように:

CREATE TABLE tb (a int, b int, c int);
Query OK, 0 rows affected (0.21 sec)

ALTER TABLE tb ADD CONSTRAINT pk_tb PRIMARY KEY (a, b);
Query OK, 0 rows affected (0.06 sec)

SHOW INDEX FROM tb WHERE key_name='PRIMARY';
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| tb    |          0 | PRIMARY  |            1 | a           | A         |        NULL |     NULL | NULL   |      | BTREE      |         |
| tb    |          0 | PRIMARY  |            2 | b           | A         |           0 |     NULL | NULL   |      | BTREE      |         |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
2 rows in set (0.02 sec)

複合キーでない場合、で1行しか取得できません SHOW INDEX クエリ:

CREATE TABLE tb2 (a int, b int, c int);
Query OK, 0 rows affected (0.05 sec)

ALTER TABLE tb2 ADD CONSTRAINT pk_tb PRIMARY KEY (a);
Query OK, 0 rows affected (0.05 sec)

SHOW INDEX FROM tb2 WHERE key_name='PRIMARY';
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| tb2   |          0 | PRIMARY  |            1 | a           | A         |           0 |     NULL | NULL   |      | BTREE      |         |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
1 row in set (0.02 sec)

他のヒント

SELECT COUNT( *  ) num_keys
FROM information_schema.KEY_COLUMN_USAGE
WHERE table_name = 'jos_modules_menu'
AND constraint_name = 'PRIMARY'
AND table_schema = 'pranav_test'

ダニエルとプラナブに感謝します:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top