[firebase-br] ALTER DOMAIN [Adicionar collate]

Gladiston Santana gladiston em vidy.com.br
Seg Abr 8 09:59:29 -03 2019


Grande só existe UM e não sou eu.
Para mim tá fácil, já que sua intensão é apenas mudar o collate.
Visto queo collate é apenas um dafault e na pratica não translitera nenhum
caracter então duas coisas são possiveis:
1) ignorar o collate default e especifica-lo explicitamente seus selects,
por exemplo, select * from clientes where razao_social collate win_ptbr
like  '%joão%'.
2) Mudar o  collate default no banco com:
alter character set win1252  set default collation win_ptbr;
Só uma atenção, mantenha o mesmo charset, mude apenas o collate para o
desejado. Mudar o charset traz consequencia aos caractereses non-ascii
armazenados.


Opção '2' muito melhor né?
E não é necessário backup/restore, talvez até fosse necessário se sua
intenção fosse alterar o charset tambem.
O IbExpert coloca o charset/collate nas instruções SQL apenas porque você
marcou uma opção chamada "decode domains", e pode te levar a considerações
erradas.

ps. Não altere as tabelas de sistema, dá me*** mais cedo ou mais tarde e
pode  até inviabilizar o restore no futuro.



Em qui, 4 de abr de 2019 às 14:14, Hélio Oliveira <hpensador em gmail.com>
escreveu:

> Grande Gladiston!
>
> Exato.
>
> A definição do CharSet e do Collate devem ser feitos na criação do banco
> de dados. A situação aqui é a seguinte... o banco de dados foi criado
> sem essas definições e já temos clientes com bases na casa do 100GB.
>
> Recentemente eles adotaram criar domains para os nomes de alguns campos
> e atualmente observaram a questão da não ordenação corretamente no caso
> de um simples select
>
> SELECT NOME FROM TABELA ORDER BY NOME
>
> Inicialmente acreditei que poderia simplesmente alterar o DOMAIN e assim
> resolver o problema, porém a coisa não é tão simples como esperado.
>
> Baseando-me no script gerado do IBExpert onde ele faz essa alteração
> atraves da tabela de sistemas:
>
> update RDB$FIELDS
>     set
>        RDB$CHARACTER_SET_ID = 53,
>        RDB$COLLATION_ID     = 6
>     where RDB$FIELD_NAME    = 'NOME_DO_DOMINIO';
>
> Fiz o processo, porém o resultado final ao meu ver só irá surtir efeito
> após um backup/restore da base de dados (o que em alguns clientes este
> processo é muito complicado - Hospitais).
>
> Bem, para tentar amenizar o problema, estou criando campos auxiliares,
> transferindo o conteúdo do campo atual para este, removendo o campo
> atual e recriando com [ALTER TABLE ADD NOME_DO_CAMPO VARCHAR(XX)
> CHARACTER SET WIN_1252 COLLATE WIN_PTBR].
>
>
> Em 04/04/2019 13:48, Gladiston Santana escreveu:
> > Acho que você não pode fazer isso, o charset é uma caracteristica da
> > estrutura enquanto o collate é a forma como o banco interpretará os
> > caracteres, por exemplo se 'João' e 'joao' são iguais ou diferentes, e
> até
> > mesmo se 'ph' terá igual a 'f'.
> > O charset é apenas um dafault caso não haja citação explicita como
> select *
> > from clientes where razao_social collate win_ptbr like  '%joão%', por
> isso
> > é bom defini-lo no inicio, isto é, na criação do banco e não exatamente
> na
> > criação da tabela.
> > se quiser alterá-lo, acho que se faz isso para o banco, ex:
> > alter character set win1252  set default collation win_ptbr;
> >
> > Mas algumas coisas mudaram recentemente então é bom conferir no manual.
> >
> > []´s
> >
> > Em qui, 4 de abr de 2019 às 10:38, Hélio Oliveira <hpensador em gmail.com>
> > escreveu:
> >
> >> Bom dia Colegas!
> >>
> >> Criei um domínio ---> CREATE DOMAIN DM_NM_METODO VARCHAR(100).
> >>
> >> Gostaria de alterar o mesmo para adicionar o COLLATE, estou tentando com
> >> o comando ---> ALTER DOMAIN DM_NM_METODO TYPE VARCHAR(100) CHARACTER SET
> >> WIN_1252 COLLATE WIN_PTBR, porém quando executo o comando recebo a
> >> mensagem:
> >>
> >> Invalid token.
> >> Dynamic SQL Error.
> >> SQL error code = -104.
> >> Token unknown - line 1, column 72.
> >> COLLATE.
> >>
> >> o que está errado?
> >>
> >>
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
> >
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


-- 
A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
na Melhoria Continua.

Em março de2018 migramos com sucesso para a nova versão da ISO 9001.

Somos a única Empresa Brasileira de Engenharia de Laboratórios com
certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
Fabricação e Instalação de Laboratórios.



Mais detalhes sobre a lista de discussão lista