プログラムでテーブルの主キーを取得するにはどうすればよいですか? 「show create table」や「show keys」などのクエリを実行できることはわかっていますが、その後、主キーの結果を解析する必要があります。簡単にできる方法がないか考えてみました。
質問する
98 次
2 に答える
1
foo.bar
「物理」テーブル (つまり、ビューではない) で作業している限り、テーブルの主キーの構成列の 1 つの文字列表現をinformation_schema データベースから取得できるはずです。
mysql> SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`')) AS `PRIMARY KEY`
-> FROM information_schema.KEY_COLUMN_USAGE
-> WHERE CONSTRAINT_NAME = 'PRIMARY'
-> AND TABLE_SCHEMA = 'foo'
-> AND TABLE_NAME = 'bar'
-> ORDER BY ORDINAL_POSITION;
+--------------+
| PRIMARY KEY |
+--------------+
| `baz`,`zoid` |
+--------------+
1 row in set (0.00 sec)
2 つの注意事項:
- これは、主キー以外のキーでは機能しない場合があります
非常に長い列名または非常に多くの列を参照するキーがある場合、GROUP_CONCAT の制限に遭遇する可能性があります。
mysql> SELECT @@session.group_concat_max_len; +--------------------------------+ | @@session.group_concat_max_len | +--------------------------------+ | 1024 | +--------------------------------+ 1 row in set (0.00 sec)
必要に応じて、通常のset ステートメントを使用して、セッションのこれを更新できます。
于 2013-12-28T19:19:35.860 に答える