プロモーションコードを管理するテーブルを作成しています
CREATE TABLE promotion_codes( id SERIAL PRIMARY KEY, code VARCHAR(25) NOT NULL, start_at TIMESTAMP WITH TIME ZONE NOT NULL, expired_at TIMESTAMP WITH TIME ZONE NOT NULL, );
promotion_codes.codeがプロモーションコード本体で有効期間がstart_at〜expired_atを想定しています。
ここで、codeに対してUNIQUE制約をつけたいのですが、start_at〜expired_atの期間内においてUNIQUEにするという制約は可能なものでしょうか?CHECK制約で制限可能であればご教示ください。
よろしくお願いいたします。
わざわざ中途半端な制約をかけるより、「全期間を通してUNIQUE」のほうが管理しやすいかと思いますが、そうできない理由はありますでしょうか。
例えば株主番号など、決められた文字列をプロモーションコードとして用いなくてはいけない場合があります。その場合毎年同じ文字列を使うことになるのでUNIQUE制約に対して期限を設けたいのです。
> start_at〜expired_atの期間内においてUNIQUE
期間は重なることはあるのでしょうか?
1. 2019/07/01~2019/07/31
2. 2019/07/15~2019/08/15
のような場合、2019/07/15~2019/07/31 の期間は、1,2を通してユニークであるとか。
回答4件
あなたの回答
tips
プレビュー