>I believe you can add partial unique indexes to cover the case where a >column is null, but if you have multiple nullable columns you need to >worry about you end up with a bunch of indexes.
Hmmm. I hadn't thought of that, thanks. Yes, the indexes would be unnessecary though. Speaking of, should be concerned about indexing NULLABLE columns? > Also, is this in compliance with SQL92? I'm surprised constraints work > this way. he I read that. I think you're right, it sounds like any comparison containing NULL at all will fail. I wrote the following procedure, which seems to do the trick. I guess my plan would be to write a bunch of these, and create the indexes manually. If anyone sees any problems with this, I'd love some input. Also, if anyone at the end of this email is a DBA/Consultant type and works in the San Diego area... Definitely let me know :) CREATE FUNCTION check_mytable_natkey() RETURNS opaque AS ' DECLARE conflictingpk integer; BEGIN SELECT INTO conflictingpk a FROM mytable WHERE ((b is null and NEW.b is null) or b = NEW.b) AND ((c is null and NEW.c is null) or c = NEW.c); IF FOUND THEN RAISE EXCEPTION ''Invalid Row!''; END IF; RETURN NEW; END; 'LANGUAGE 'plpgsql'; ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend