Skip to content

Instantly share code, notes, and snippets.

@eirenik0
Created October 20, 2014 17:33
Show Gist options
  • Save eirenik0/52ca53e1809d4089fa6e to your computer and use it in GitHub Desktop.
Save eirenik0/52ca53e1809d4089fa6e to your computer and use it in GitHub Desktop.
Emulate casscade update and delete
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