Rather than this, I think an exclusive-or operator would be a lot more useful. The only difficulty I run into with CHECK constaints is when I want to ensure that only ONE condition is true.
"bool != bool" works as XOR. If you need "exactly one of N" you could do something like "(cond1::int + cond2::int + ...) = 1". We could wrap some syntactic sugar around either of these, but it's not clear to me that it'd be any more useful than a custom SQL function.
It would prevent having to re-create that function every time... :)
And it would nicely complement our recent addition of "