0

プログラムでテーブルの主キーを取得するにはどうすればよいですか? 「show create table」や「show keys」などのクエリを実行できることはわかっていますが、その後、主キーの結果を解析する必要があります。簡単にできる方法がないか考えてみました。

4

2 に答える 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 つの注意事項:

  1. これは、主キー以外のキーでは機能しない場合があります
  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 に答える