Created
October 20, 2014 17:33
-
-
Save eirenik0/52ca53e1809d4089fa6e to your computer and use it in GitHub Desktop.
Emulate casscade update and delete
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE FUNCTION casscade_func() RETURNS TRIGGER AS $$ | |
DECLARE | |
exist boolean; | |
BEGIN | |
IF TG_OP = 'UPDATE' THEN | |
IF OLD.id <> NEW.id THEN | |
UPDATE tc_order SET customer_id=NEW.id WHERE customer_id=OLD.id; | |
END IF; | |
RETURN NEW; | |
ELSIF TG_OP = 'DELETE' THEN | |
exist := exists(SELECT customer_id FROM tc_order WHERE customer_id=OLD.id); | |
IF exist THEN | |
DELETE FROM tc_order WHERE customer_id=OLD.id; | |
END IF; | |
RETURN OLD; | |
END IF; | |
END; | |
$$ LANGUAGE plpgsql; | |
CREATE TRIGGER trigger_tc_customer | |
AFTER UPDATE OR DELETE ON tc_customer FOR EACH ROW EXECUTE PROCEDURE casscade_func(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment