several ways to do it, here's one: check (coalesce(a,b,c) not null) if you want one or the other to be present, but not both see this thread: http://archives.postgresql.org/pgsql-general/2006-09/msg00207.php > -----Original Message----- > From: pgsql-general-owner@xxxxxxxxxxxxxx > [mailto:pgsql-general-owner@xxxxxxxxxxxxxx] On Behalf Of > Matthew Terenzio > Sent: Thursday, November 02, 2006 4:11 PM > To: PostgreSQL general > Subject: [GENERAL] not null across multiple columns > > > here is an interesting question (to me) > > suppose you wanted to be certain that either one of two or > more columns were present > > Like in a user table, either a username or an email need to > be present to create a row. > > You can't use not null because it's an either or situation. > > what's the best method to accomplish this sort of constraint?