Created
October 14, 2011 14:32
-
-
Save aalvesjr/1287285 to your computer and use it in GitHub Desktop.
Ex.Postgres
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| CREATE TABLE administestabelec ( | |
| codestabelec integer NOT NULL, | |
| codadminist integer NOT NULL, | |
| percdescto numeric DEFAULT 0 NOT NULL, | |
| valdescto numeric DEFAULT 0 NOT NULL, | |
| taxaenvio numeric DEFAULT 0 NOT NULL, | |
| diaenvio integer DEFAULT 0 NOT NULL, | |
| usuario character varying(20), | |
| datalog date | |
| ); | |
| CREATE TABLE administradora ( | |
| codadminist integer NOT NULL, | |
| nome character varying(40) NOT NULL, | |
| cnpj character varying(20), | |
| fone character varying(20), | |
| endereco character varying(40), | |
| bairro character varying(30), | |
| cep character varying(9), | |
| uf character(2), | |
| codcidade integer, | |
| observacao character varying(500), | |
| usuario character varying(20), | |
| datalog date, | |
| numero character varying(20), | |
| complemento character varying(20), | |
| codconta integer | |
| ); | |
| CREATE TRIGGER tgr_produtoestab_beforedelete | |
| BEFORE DELETE ON produtoestab | |
| FOR EACH ROW | |
| EXECUTE PROCEDURE stpr_produtoestab_beforedelete(); | |
| CREATE FUNCTION stpr_produtoestab_beforedelete() RETURNS "trigger" | |
| AS $$ | |
| DECLARE sldatual numeric; | |
| DECLARE rowEstabelecimento estabelecimento%ROWTYPE; | |
| DECLARE rowProduto produto%ROWTYPE; | |
| BEGIN | |
| sldatual = old.sldinicio + old.sldentrada - old.sldsaida; | |
| IF sldatual != 0 THEN | |
| SELECT * INTO rowProduto FROM produto WHERE codproduto = old.codproduto; | |
| SELECT * INTO rowEstabelecimento FROM estabelecimento WHERE codestabelec = old.codestabelec; | |
| RAISE EXCEPTION 'Saldo do produto <b>%</b> (%) no estabelecimento <b>%</b> (%) é de <b>%</b> unidades.<br>Para excluír o produto, seu estoque atual deve ser <b>0,00</b> (zero) unidades.', old.codproduto, rowProduto.descricaofiscal, old.codestabelec, rowEstabelecimento.nome, formatar(sldatual,2); | |
| RETURN NULL; | |
| END IF; | |
| RETURN old; | |
| END; | |
| $$ | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment