Advertisement
Guest User

Untitled

a guest
Mar 5th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION public.controle_prod_p()
  2. RETURNS trigger AS
  3. $BODY$
  4. DECLARE id uuid;
  5. DECLARE usuario varchar(255);
  6. DECLARE query text;
  7. DECLARE test boolean;
  8. DECLARE bd varchar(255);
  9.  
  10. BEGIN
  11. SELECT current_user into usuario;
  12. SELECT current_database() into bd;
  13. SELECT md5(random()::text || clock_timestamp()::text)::uuid INTO id;
  14.  
  15. IF TG_OP = 'INSERT' THEN
  16. query := 'INSERT INTO public.controle(uuid,data,operacao,usuario,classe,database, objeto, historico)
  17. VALUES('|| '''' || id ||'''' ||','||'''' || NOW() ||'''' ||','||'''' || TG_OP ||'''' ||',' ||'''' || usuario ||'''' || ',' ||'''' || TG_TABLE_NAME ||'''' || ',' ||'''' || bd ||'''' || ',' ||'''' || row_to_json(NEW) ||'''' || ',NULL);';
  18. NEW.controle_id = id;
  19.  
  20. END IF;
  21.  
  22. IF TG_OP = 'UPDATE' THEN
  23.  
  24. query := 'INSERT INTO public.controle(uuid,data,operacao,usuario,classe,database)
  25. VALUES('|| '''' || id ||'''' ||','||'''' || NOW() ||'''' ||','||'''' || TG_OP ||'''' ||',' ||'''' || usuario ||'''' || ',' ||'''' || TG_TABLE_NAME ||'''' || ',' ||'''' || bd ||'''' || ',' ||'''' || row_to_json(NEW) ||'''' || ',' ||'''' || OLD.controle_id ||'''' || ');';
  26. NEW.controle_id = id;
  27. END IF;
  28.  
  29. IF TG_OP = 'DELETE' THEN
  30.  
  31. query := 'DELETE FROM public.controle WHERE uuid=' ||'''' || OLD.controle_id ||''''||'; INSERT INTO public.controle(uuid,data,operacao,usuario,classe,database)
  32. VALUES('|| '''' || OLD.controle_id ||'''' ||','||'''' || NOW() ||'''' ||','||'''' || TG_OP ||'''' ||',' ||'''' || usuario ||'''' || ',' ||'''' || TG_TABLE_NAME ||'''' || ',' ||'''' || bd ||'''' || ');';
  33.  
  34. END IF;
  35.  
  36. SELECT 'conn1' = ANY (dblink_get_connections()) INTO test;
  37. IF test THEN
  38. PERFORM dblink('conn1',query);
  39. ELSE
  40. PERFORM dblink_connect_u('conn1', 'dbname=controle_micro port=5434 hostaddr=10.25.163.9 user=cmicro password=cmicro');
  41. PERFORM dblink('conn1',query);
  42. END IF;
  43.  
  44. IF TG_OP = 'DELETE' THEN
  45. RETURN OLD;
  46. ELSE
  47. RETURN NEW;
  48. END IF;
  49.  
  50. END;
  51. $BODY$
  52. LANGUAGE plpgsql VOLATILE
  53. COST 100;
  54. ALTER FUNCTION public.controle_prod_p()
  55. OWNER TO postgres;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement