ど素人から毛を生やす。<延>

[MySQL]プライマリキーとユニークキーを取得する。

Web > Other 2018年8月3日(最終更新:1月前)

どもです。
MySQLにて。

ユニークキーに設定されているカラム情報を抜き出す、という動作の需要がありまして。
ちょいと覚えておきたい内容だったので、備忘録しときます。

SHOW INDEX FROM テーブル名

これで、そのテーブルのインデックス回りの情報が抜き出せます。
SHOW INDEXのリファレンスはこちら

SHOW INDEXは、インデックスを構成する1カラムごとで1行を構成します。
つまりインデックスを貼っていたり、プライマリやユニークだったりするカラムだけを抜き出します。

で、注目したいのが「Key_name」「Non_unique」

「Key_name」
インデックスの名前。このインデックスが主キーである場合、その名前は常に PRIMARY です。

「Non_unique」
このインデックスが重複を含むことができない場合は 0、できる場合は 1。

つまり、
row["Key_name"] === "PRIMARY" なら、プライマリキーです。

それなら
row["Non_unique"] == 0 なら、ユニークキー?

広義的にはそうなのですが、プライマリキー⊆ユニークキーなので、この場合はプライマリキー&ユニークキーになります。

ユニークキーだけを取りたい場合は、
row["Non_unique"] == 0 && row["Key_name"] !== "PRIMARY"

完遂。(*'ω'*)

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)