Marcelo Moacir Florindo escreveu:
Senhores,
tenho esta função:
CREATE OR REPLACE FUNCTION cadastro.cidade_validar_campos()
RETURNS "trigger" AS
$BODY$DECLARE
resultado INT2;
BEGIN
-- INSERT E UPDATE
IF (TG_OP='INSERT') OR (TG_OP='UPDATE') THEN
IF (CHAR_LENGTH(TRIM(NEW.nm_cidade))=0) OR (NEW.nm_cidade IS
NULL) THEN
RAISE EXCEPTION 'Nome da Cidade não poderá ser nulo.';
END IF;
IF (CHAR_LENGTH(TRIM(NEW.cd_cidade))=0) OR (NEW.cd_cidade IS
NULL) THEN
RAISE EXCEPTION 'Código da Cidade não poderá ser nulo.';
END IF;
END IF;
-----------------------------------------------
-- INSERT
IF (TG_OP='INSERT') THEN
-- VALIDAR O NOME DA CIDADE
SELECT COUNT(*) INTO resultado FROM cadastro.cidade WHERE
nm_cidade=NEW.nm_cidade;
IF (resultado>0) THEN
RAISE EXCEPTION 'Nome da Cidade já existe no sistema.';
END IF;
END IF;
-----------------------------------------------
-- UPDATE
IF (TG_OP='UPDATE') THEN
-- VALIDAR O NOME DA CIDADE
SELECT nm_cidade FROM cadastro.cidade WHERE nm_cidade=NEW.nm_cidade
AND cd_cidade<>NEW.cd_cidade;
IF FOUND THEN
RAISE EXCEPTION 'Nome da Cidade já existe no sistema';
END IF;
END IF;
-----------------------------------------------
-- PREENCHIMENTO DOS CAMPOS
NEW.fl_status :='S';
NEW.dt_ult_atualizacao := CURRENT_TIMESTAMP;
NEW.dt_inclusao := CURRENT_TIMESTAMP;
-----------------------------------------------
RETURN NULL;
^^^^^^^^^^^
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION cadastro.cidade_validar_campos() OWNER TO sisgene;
Porém não consigo salvar os dados na tabela..
Onde poderia estar o erro??
Creio que esta função é utilizada em um trigger BEFORE, correto?
Neste caso utilize "RETURN NEW" no lugar de "RETURN NULL".
Do manual:
http://www.postgresql.org/docs/8.2/interactive/plpgsql-trigger.html
"Row-level triggers fired BEFORE may return null to signal the trigger
manager to skip the rest of the operation for this row (i.e., subsequent
triggers are not fired, and the INSERT/UPDATE/DELETE does not occur for
this row)."
[]s
Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral