How about the not null constraint be dependent on the discriminator through a check constraint instead i.e. ... check (discr_col = 'A' and col is not null or discr_col <> 'A')