MySQLデータベーステーブルで複合プライマリキーを識別する方法は?
-
27-09-2019 - |
質問
MySQLデータベーステーブルで複合プライマリキーを識別する方法は?また
編集2複合プライマリキーを含むテーブルのインディーズを表示するために、どのSQLクエリを使用する必要がありますか?
MySQLデータベースには2つまたは3つのプライマリキーの複合キーを備えているテーブルがたくさんあります。PHPMyAdminを使用しています。また、どのテーブルに複合キーがあるかを識別するためにPHPスクリプトをコーディングする必要があります。クエリを使用してテーブル
SHOW INDEXES FROM `".$row3['TABLE_NAME']."` WHERE Key_name = 'PRIMARY'
どちらが私に欲しいものを与えているのですが、今では、複合キーを持っているインデックスを見つけるにはどうすればよいですか?
編集1
ダニエルの画像のコンテキストで、phpmyadminの複合主キーの外観のコメント
解決
アップデート:
更新された質問にさらに、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'
ダニエルとプラナブに感謝します:)
所属していません StackOverflow