SQLServer2005を使用しています。
これらの列で構成される複合キーがあります。
UserID ..... int ..
ADate.....日時
ユーザーの時刻が異なる2つの類似した日付を入力すると、そのレコードが許可されます。でも、日付が似ているので制限したいです。
同一の日付部分が挿入されるときにそれを制限するにはどうすればよいですか?
SQLServer2005を使用しています。
これらの列で構成される複合キーがあります。
UserID ..... int ..
ADate.....日時
ユーザーの時刻が異なる2つの類似した日付を入力すると、そのレコードが許可されます。でも、日付が似ているので制限したいです。
同一の日付部分が挿入されるときにそれを制限するにはどうすればよいですか?
あなたのテーブルを考えてみましょう
create table tbl (
userid int,
adate datetime
)
COMPUTED 列を追加できます
alter table tbl add adateonly as datediff(d,0,adate);
その上に UNIQUE 制約を作成できるように:
alter table tbl add constraint uq_tbl_date unique(userid, adateonly);
私があなたの質問を理解していれば、インデックスまたは他の方法で複合制限を作成したいですか?
1) インデックスを使用して、yyyymmdd のような日付だけで別の列 varchar(8) を追加してから、トリガーを使用するか、挿入の前に日付文字列を生成できますか。
2) テーブルにトリガーを作成し、2 つのキー (おそらく挿入トリガーと更新トリガー) を検証します。
これがお役に立てば幸いです, ホセ・クルス