使用SQL Server 2K8 R2,我有两个相关的表 - 成员和问卷调查表。每个表都有一个名为ID的BigInt PK。调查问卷有会员ID,以便与正在填写表格的成员联系。 随着时间的推移,会员可以多次填写调查问卷。业务要求是每个成员每年完成一次最多的调查问卷。使用简单的CHECK CONSTRAINT
无法解决AFAIK。
有“干净”的方法吗?我希望避免做类似以下的事情:
CREATE TRIGGER tr_Questionnaire_Insert
ON Questionnaire
INSTEAD OF INSERT
AS BEGIN
-- Check for a violation of once questionnaire per calendar year and if found, call RAISERROR
-- Otherwise continue with INSERT
END;
我不想使用这种方法的原因主要是因为它要求我(或者长期维持这个解决方案的任何人)记住如果调查问卷的架构应该改变,就要保持触发。
答案 0 :(得分:6)
只需在问卷表上创建一个包含MemberId和year的唯一索引。