どもです。
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"
完遂。(*'ω'*)