Advertisement
Guest User

Pizda

a guest
Jul 6th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION function_update_place_status()
  2.   RETURNS TRIGGER AS
  3. $BODY$
  4. DECLARE
  5.   _account_id INTEGER;
  6.   _status BOOLEAN;
  7. BEGIN
  8.   SELECT camera.account_id INTO _account_id FROM camera WHERE camera.id = new.camera_id;
  9.  
  10.   SELECT bool_and(place.status) INTO _status FROM place
  11.     INNER JOIN camera
  12.       ON (camera.id = place.camera_id)
  13.   WHERE place.label = new.label AND camera.account_id = _account_id;
  14.  
  15.   UPDATE account
  16.     SET places = jsonb_set(places, format('{%s}', new.label)::text[], cast(_status as text)::jsonb, true)
  17.   WHERE account.id = _account_id;
  18.  
  19.   RETURN new;
  20. END;
  21. $BODY$
  22. LANGUAGE plpgsql;
  23.  
  24.  
  25. DROP TRIGGER IF EXISTS trigger_update_place_status ON place CASCADE;
  26.  
  27.  
  28. CREATE TRIGGER trigger_update_place_status
  29.   AFTER UPDATE
  30.   ON place
  31.   FOR EACH ROW
  32.   WHEN (new.status <> old.status)
  33. EXECUTE PROCEDURE function_update_place_status();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement