Skip to content

Commit f2400ab

Browse files
authored
Update dados.sql
Criar triggers para atualizar estoque de produtos
1 parent ab5f22e commit f2400ab

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

dados.sql

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,44 @@ create table item_venda(
122122
constraint fk_itemvenda_produto foreign key (produto_id) references produto(id)
123123
);
124124

125+
126+
CREATE OR REPLACE FUNCTION diminui_estoque_func()
127+
RETURNS trigger AS $$
128+
BEGIN
129+
update produto set estoque = estoque - new.quant where produto.id = new.produto_id;
130+
RETURN NEW;
131+
END;
132+
$$ LANGUAGE 'plpgsql';
133+
134+
CREATE OR REPLACE FUNCTION devolve_estoque_func()
135+
RETURNS trigger AS $$
136+
BEGIN
137+
update produto set estoque = estoque + old.quant where produto.id = old.produto_id;
138+
RETURN NEW;
139+
END;
140+
$$ LANGUAGE 'plpgsql';
141+
142+
CREATE OR REPLACE FUNCTION atualiza_estoque_func()
143+
RETURNS trigger AS $$
144+
BEGIN
145+
update produto set estoque = estoque + old.quant - new.quant where produto.id = new.produto_id;
146+
RETURN NEW;
147+
END;
148+
$$ LANGUAGE 'plpgsql';
149+
150+
151+
CREATE TRIGGER diminui_estoque_trigger
152+
AFTER INSERT ON item_venda
153+
FOR EACH ROW EXECUTE PROCEDURE diminui_estoque_func();
154+
155+
CREATE TRIGGER devolve_estoque_trigger
156+
AFTER DELETE ON item_venda
157+
FOR EACH ROW EXECUTE PROCEDURE devolve_estoque_func();
158+
159+
CREATE TRIGGER atualiza_estoque_trigger
160+
AFTER UPDATE ON item_venda
161+
FOR EACH ROW EXECUTE PROCEDURE atualiza_estoque_func();
162+
125163
-- ########################################################################################################
126164

127165
INSERT INTO regiao_geografica (nome) VALUES ('Norte'), ('Nordeste'), ('Centro-Oeste'), ('Sudeste'), ('Sul');

0 commit comments

Comments
 (0)