[firebase-br] Problema com trigger -> CHARACTER SET

Pha-Lista lista em pha.com.br
Qui Abr 28 07:18:12 -03 2005


Voce definiu o Character Set da Conexao?

Voce nao esta estourando o limite de algum campo?

PHA
Nova Odessa / SP - Brazil

-----Mensagem original-----
From: "Rafael Cabral" rafael.cabral em icraft.com.br
Date: Wed, 27 Apr 2005 19:04:25 -0300
To: lista em firebase.com.br
Subject: [firebase-br] Problema com trigger -> CHARACTER SET

> Pessoal,
> 
> Estou com um problema urgente.
> 
> Supondo que eu tenha 2 tabelas. Uma de cadastro e outra de registros
> excluídos.
> A tabela de registros excluídos só é preenchida através de um tri> gger quando
> um registro da tabela de cadastro é excluída.
> O problema ocorre quando excluo um registro que tenha acento. Na hora de
> executar o trigger, aparece aquele famoso erro cannot transliterate betwe> en
> character sets. Esse problema só não ocorre quando não utilizo os c> haracter
> sets. Abaixo está o código do trigger a ser executado.
> 
> CREATE TABLE CLIENTE(NOME VARCHAR (50) CHARACTER SET ISO8859_1 NOT NULL
> COLLATE PT_PT);
> ALTER TABLE CLIENTE ADD CONSTRAINT ID_NOME PRIMARY KEY(NOME);
> 
> CREATE TABLE SYS_DELETE(
>     SEQ INTEGER NOT NULL,
>     TABELA VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE PT_PT,
>     CHAVE VARCHAR(150) CHARACTER SET ISO8859_1 COLLATE PT_PT,
>     DATA DATE,
>     USUARIO VARCHAR(20) CHARACTER SET ISO8859_1 COLLATE PT_PT,
>     BANCO VARCHAR(30) CHARACTER SET ISO8859_1 COLLATE PT_PT
> );
> 
> ALTER TABLE SYS_DELETE ADD CONSTRAINT ID_SYS_DELETE PRIMARY KEY (SEQ);
> 
> CREATE OR ALTER TRIGGER "BEF_CLIENTE" FOR "CLIENTE"
> BEFORE DELETE
> AS
> DECLARE VARIABLE TOT_DEL INTEGER;
> DECLARE VARIABLE MAX_DEL INTEGER;
> BEGIN
>     SELECT COUNT(*) FROM SYS_DELETE WHERE NOME_TABELA = 'CLIENTE' AND C> HAVE
> =  OLD."NOME" INTO :TOT_DEL;
>     IF (TOT_DEL = 0) THEN
>         BEGIN
>             SELECT COALESCE(MAX(SEQ),0) + 1 FROM SYS_DELETE INTO :MAX_DEL> ;
>             INSERT INTO SYS_DELETE VALUES (:MAX_DEL, 'CLIENTE',  OLD."NOM> E",
> CURRENT_TIMESTAMP, USER, 'SISTEMA'); -- Erro ocorre aqui.
>         END
>     ELSE
>         UPDATE SYS_DELETE SET MOMENTO = CURRENT_TIMESTAMP, USUARIO = > USER,
> LOCAL = 'SISTEMA' WHERE NOME_TABELA = 'CLIENTE' AND CHAVE =  OLD."N> OME";
> END
> 
> O campo em questão é o NOME.
> Este erro não impede que o registro na tabela CLIENTE seja excluído. > Porém
> como ocorre o erro na linha indicada, não insere na tabela SYS_DELETE.
> O engraçado é que quando insiro manualmente um registro na tabela SYS> _DELETE
> para testar com acentos, ele aceita tranquilamente
> 
> []s,
> 
> Rafael Cabral
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://search.gmane.org/search.php?grouprebase





Mais detalhes sobre a lista de discussão lista