-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtrigger.sql
More file actions
87 lines (77 loc) · 3.07 KB
/
trigger.sql
File metadata and controls
87 lines (77 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
-- CATALOGO
CREATE OR REPLACE FUNCTION logCatalogo() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO log_logcatalogo (a_id_tupla, n_id_tupla, metodo, data, a_nome, n_nome, a_descricao, n_descricao,
a_preco_id, n_preco_id)
values (OLD.id, NEW.id, TG_OP, CURRENT_TIMESTAMP, OLD.nome, new.nome, OLD.descricao, NEW.descricao,
OLD.preco_id, NEW.preco_id);
IF (TG_OP = 'DELETE') then
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER log_catalogo
BEFORE UPDATE or INSERT or DELETE ON catalogo_catalogo
FOR EACH ROW EXECUTE PROCEDURE logCatalogo();
-- FORNECEDOR
CREATE OR REPLACE FUNCTION logFornecedor() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO log_logfornecedor (a_id_tupla, n_id_tupla, metodo, data, a_nome, n_nome, a_cnpj, n_cnpj)
values (OLD.id, NEW.id, TG_OP, CURRENT_TIMESTAMP, OLD.nome, new.nome, OLD.cnpj, NEW.cnpj);
IF (TG_OP = 'DELETE') then
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER log_fornecedor
BEFORE UPDATE or INSERT or DELETE ON catalogo_fornecedor
FOR EACH ROW EXECUTE PROCEDURE logFornecedor();
-- LOTE
CREATE OR REPLACE FUNCTION logLote() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO log_loglote (a_id_tupla, n_id_tupla, metodo, data, a_data_lote, n_data_lote, a_quantidade, n_quantidade, a_produto_fornecedor_id, n_produto_fornecedor_id)
values (OLD.id, NEW.id, TG_OP, CURRENT_TIMESTAMP, OLD.data, new.data, OLD.quantidade, NEW.quantidade, OLD.produto_fornecedor_id, NEW.produto_fornecedor_id);
IF (TG_OP = 'DELETE') then
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER log_lote
BEFORE UPDATE or INSERT or DELETE ON catalogo_lote
FOR EACH ROW EXECUTE PROCEDURE logLote();
-- PRECO
CREATE OR REPLACE FUNCTION logPreco() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO log_logpreco (a_id_tupla, n_id_tupla, metodo, data, a_real, n_real, a_dolar, n_dolar)
values (OLD.id, NEW.id, TG_OP, CURRENT_TIMESTAMP, OLD.real, new.real, OLD.dolar, NEW.dolar);
IF (TG_OP = 'DELETE') then
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER log_preco
BEFORE UPDATE or INSERT or DELETE ON catalogo_preco
FOR EACH ROW EXECUTE PROCEDURE logPreco();
-- PRODUTOFORNECEDOR
CREATE OR REPLACE FUNCTION logProdutoFornecedor() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO log_logprodutofornecedor (a_id_tupla, n_id_tupla, metodo, data, a_fornecedor_id, n_fornecedor_id, a_produto_id, n_produto_id)
values (OLD.id, NEW.id, TG_OP, CURRENT_TIMESTAMP, OLD.fornecedor_id, new.fornecedor_id, OLD.produto_id, NEW.produto_id);
IF (TG_OP = 'DELETE') then
RETURN OLD;
ELSE
RETURN NEW;
END IF;
END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER log_produto_fornecedor
BEFORE UPDATE or INSERT or DELETE ON catalogo_produtofornecedor
FOR EACH ROW EXECUTE PROCEDURE logProdutoFornecedor();