I suppose I could write a stored procedure to do this and call it in a check constraint. But I was wondering if there is something more elegant.
You cannot use a check constraint here as the behavior is not immutable. You can use a trigger function though. Or normalize the table and use the built-it foreign key triggers.
David J.