Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. Table A
  2. -some_id
  3.  
  4. Table B
  5. -another_id
  6.  
  7. Table C
  8. -some_id_fk
  9. -another_id_fk
  10.  
  11. CREATE TABLE a (a_id serial PRIMARY KEY, a text NOT NULL);
  12. CREATE TABLE b (b_id serial PRIMARY KEY, b text NOT NULL);
  13.  
  14. CREATE TABLE ab (
  15. ab_id serial PRIMARY KEY
  16. , a_id int REFERENCES a ON DELETE SET NULL
  17. , b_id int REFERENCES b ON DELETE SET NULL
  18. , UNIQUE (a_id, b_id)
  19. );
  20.  
  21. CREATE OR REPLACE FUNCTION trg_ab_upbef_nulldel()
  22. RETURNS trigger AS
  23. $func$
  24. BEGIN
  25. DELETE FROM ab WHERE ab_id = NEW.ab_id;
  26. RETURN NULL;
  27. END
  28. $func$ LANGUAGE plpgsql;
  29.  
  30. CREATE TRIGGER upbef_nulldel
  31. BEFORE UPDATE OF a_id, b_id ON ab
  32. FOR EACH ROW
  33. WHEN (NEW.a_id IS NULL AND
  34. NEW.b_id IS NULL)
  35. EXECUTE PROCEDURE trg_ab_upbef_nulldel();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement