>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

Reply via email to