一意な部分インデックス

部分インデックス

create table GIRL_FRIENDS (
    BOY_ID int,
    名前 text,
    本命 boolean,
    ...
);

上のような一夫多妻的な GIRL_FRIENDS テーブルがあったとして、ガールフレンドは何人いてもいいけど本命は一人だけという制約を課したい場合、今まではアプリケーション側だけで対応してたんだけど、部分インデックスに一意制約を加えれば PostgreSQL でもこの制約を課せることを今日知った。

この例の場合は次のようにインデックスを作る。

create unique index IDX_GIRL_FRIENDS on GIRL_FRIEND (BOY_ID) where 本命 = true;
Last updated on July 8, 2015