• Alternatively you could have a computed column on the Region table which is the id of the region when it is active and the negative of the id when it is inactive (((2*isActive)-1)*RegionID). Have this as the column the foreign key looks up. Then have a constraint on the office table that the RegionID column multiplied by the Active column should always be positive ((RegionID*isActive)> 0).

    This should stop active offices being in inactive regions (although I havent tested it) and all the logic is then kept in the two tables in question.

    Athos