我有一个包含以下字段和示例记录的表:
sample_date customer active 25/12/2010 12356 N 01/12/2012 12356 N 05/11/2013 12356 N 05/07/2014 12356 Y
我想强制执行2个约束:
因此它拒绝为此客户保存任何其他行,其中ACTIVE值为“Y”,除非旧的第一行设置为“N”。
关于如何实现这一点的任何想法?
非常感谢!
答案 0 :(得分:2)
每个CUSTOMER只有一个“ACTIVE”设置为“Y”(但允许几个“N”)
create unique index ix_only_one_active
on the_table (customer)
where active = 'Y';
这将允许为具有'Y'
以外的活动标志的客户插入任意数量的行。您可能还想在该列上添加检查约束
每个CUSTOMER只有一个SAMPLE_DATE
create unique index ix_unique_sample_date_customer
on the_table (customer, sample_date);
P.S。:我同意poz的评论:将active
列定义为boolean