1 |
|
2 | CREATE OR REPLACE FUNCTION controlar_modificacion_generada_trg()
|
3 | RETURNS trigger AS
|
4 | $BODY$
|
5 | DECLARE
|
6 | v_tabla_datos TEXT;
|
7 | v_operativo TEXT;
|
8 | v_generada DATE;
|
9 | v_tipo text;
|
10 | v_texto_op text;
|
11 | v_texto_obj text;
|
12 | v_registro_salida RECORD;
|
13 |
|
14 | BEGIN
|
15 | CASE TG_TABLE_NAME
|
16 | WHEN 'tabla_datos' THEN
|
17 | v_tabla_datos=OLD.tabla_datos;
|
18 | v_operativo =OLD.operativo;
|
19 | IF OLD.generada IS NOT NULL and OLD.tipo='externa' THEN
|
20 | RAISE EXCEPTION 'ERROR no se puede modificar tabla_datos % del operativo %. Porque ya fue generado', v_tabla_datos, v_operativo;
|
21 | END IF;
|
22 | RETURN NEW;
|
23 |
|
24 | WHEN 'variables', 'variables_opciones' THEN
|
25 | IF TG_TABLE_NAME='variables' THEN
|
26 | v_texto_obj='variable';
|
27 | ELSE
|
28 | v_texto_obj='opcion';
|
29 | END IF;
|
30 | CASE TG_OP
|
31 | WHEN 'INSERT' THEN
|
32 | v_texto_op= 'agregar ';
|
33 | v_registro_salida=NEW;
|
34 | v_tabla_datos=new.tabla_datos;
|
35 | v_operativo =new.operativo;
|
36 | WHEN 'UPDATE' THEN
|
37 | v_texto_op= 'modificar ';
|
38 | v_registro_salida=NEW;
|
39 | v_tabla_datos=old.tabla_datos;
|
40 | v_operativo =old.operativo;
|
41 | ELSE
|
42 | v_texto_op= 'borrar ';
|
43 | v_registro_salida=OLD;
|
44 | v_tabla_datos=old.tabla_datos;
|
45 | v_operativo =old.operativo;
|
46 | END CASE;
|
47 | SELECT generada , tipo
|
48 | INTO v_generada, v_tipo
|
49 | FROM tabla_datos
|
50 | WHERE operativo=v_operativo AND tabla_datos=v_tabla_datos;
|
51 | IF v_generada IS NOT NULL and v_tipo='externa' THEN
|
52 | RAISE EXCEPTION 'ERROR no se puede % % , la tabla de datos "%" externa del operativo % ya fue generada', v_texto_op,v_texto_obj,v_tabla_datos, v_operativo;
|
53 | END IF;
|
54 | RETURN v_registro_salida;
|
55 | ELSE
|
56 | RAISE EXCEPTION 'ERROR Tabla "%" no considerada en "controlar_modificacion_generada_trg"',TG_TABLE_NAME;
|
57 | END CASE;
|
58 | END;
|
59 | $BODY$
|
60 | LANGUAGE plpgsql ;
|
61 | --ALTER FUNCTION controlar_modificacion_generada_trg()
|
62 | -- OWNER TO procesamiento_owner;
|
63 |
|
64 |
|
65 | CREATE TRIGGER variables_controlar_modificacion_generada_trg
|
66 | BEFORE UPDATE OR INSERT OR DELETE
|
67 | ON variables
|
68 | FOR EACH ROW
|
69 | EXECUTE PROCEDURE controlar_modificacion_generada_trg();
|
70 |
|
71 | CREATE TRIGGER var_opciones_controlar_modificacion_generada_trg
|
72 | BEFORE UPDATE OR INSERT OR DELETE
|
73 | ON variables_opciones
|
74 | FOR EACH ROW
|
75 | EXECUTE PROCEDURE controlar_modificacion_generada_trg();
|
76 |
|
77 | CREATE TRIGGER tabla_datos_controlar_modificacion_generada_trg
|
78 | BEFORE UPDATE
|
79 | ON tabla_datos
|
80 | FOR EACH ROW
|
81 | EXECUTE PROCEDURE controlar_modificacion_generada_trg();
|
82 |
|
83 |
|
\ | No newline at end of file |