[firebase-br] RES: RES: RES: RES: Primary keys não estão NOT NULL

Davi Eduardo Borges Wall davi.wall em mult.com.br
Ter Dez 11 09:08:08 -03 2007


Que isso Eduardo, nunca achei que você estava questionando o meu caráter.
Eu achei que suas afirmações eram válidas.

Eu tento evitar ao máximo mexer no metadata do Firebird e quando tenho que mexer
eu me utilizo de extrema cautela. E faço vários testes após a "mexida", pois querendo ou não,
estamos falando de dados do cliente e que são deveras importante.

Acho muito construtivo essa troca de idéias.

[]'s
Davi.

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em nome de Eduardo Jedliczka
Enviada em: terça-feira, 11 de dezembro de 2007 08:51
Para: 'FireBase'
Assunto: [firebase-br] RES: RES: RES: Primary keys não estão NOT NULL

Davi, (não considere isto um FLAME, ou seja, não escrevi para lhe ofender)
não questionei sua capacidade ou caráter, apenas fiz uma afirmação de uma
verdade muito comum no mercado, a diferença de comprometimento dos usuários
em relação a Softwares produzidos por grandes empresas e softwares
gratuitos.

Quando fiz minha pós-graduação em Banco de dados, um dos instrutores citou
dois casos que teve que "alterar por baixo dos panos" algumas coisas nas
tabelas de sistema do Oracle 8. Ele disse que fez isto com um imenso medo, e
sempre estava com alguém do suporte ORACLE do outro lado da linha (falando
em Inglês)

Num outro momento, conversei com um outro DBA de DB2 que havia perdido um
banco de dados, por ficar "fuçando" onde não devia.

Entendo que há muitas coisas boas no firebird, mas também é irritante ver
que não há um comando DDL para "trocar o estado de obrigatoriedade" de um
campo.

Lembrando que como o Firebird aceita renomear campos (coisa que o Oracle não
fazia antes da versão 8), dá para trocar o estado simplesmente criando um
campo temporário, migrando os dados, apagar o campo original e renomear o
novo. Mas, como muitos podem achar que isto dá muito trabalho, e o
IBExpertinho faz com 2 cliques do mouse.... Já dá para imaginar o que as
pessoas preferem fazer.

Não sou contra utilizar ferramentas, mas sempre procuro saber quais os
riscos e conseqüências do uso das mesmas, pois o banco nunca fica íntegro
após certas operações realizadas diretamente nas tabelas de sistema (muitas
só são checadas durante um restore, o que pode ser muito tarde). 

Atenciosamente
_____________________________________________
Eduardo Jedliczka - Membro do TeamFB

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Davi Eduardo Borges Wall
Enviada em: segunda-feira, 10 de dezembro de 2007 17:45
Para: FireBase
Assunto: [firebase-br] RES: RES: Primary keys não estão NOT NULL

Eduardo,

Eu usei o IBExpert para "desligar" o not null. Consequentemente ele faz um
update diretamente no metadado do FireBird.

Eu não sei qual sentido da palavra "admitir" você está usando. Mas na minha
humilde opinião qualquer banco de dados
não deveria permitir alterações direto no metadado, sem um intermediário de
consistência.

Eu nunca precisei alterar o metadado do Oracle por exemplo, por isso nem sei
se é possível alterar.
No firebird já é a segunda vez que eu tenho que resolver algum problema
mexendo direto no metadado.
Não que isso seja um problema pra mim, eu não sou o tipo de programador que
quer tudo pronto e também não reclamo do firebird
eu acho que ele faz muito bem o que propõem fazer.

Agora concordo com você que o banco de dados não tem como prever uma
alteração no metadado, isso foi falha minha.

[]'s
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Jedliczka
Enviada em: segunda-feira, 10 de dezembro de 2007 17:14
Para: 'FireBase'
Assunto: [firebase-br] RES: Primary keys não estão NOT NULL

Davi,

Qual comando SQL você utilizou para "desligar o NOT NULL" ????

Pois, NENHUM banco de dados admite (sem efeitos colaterais) um UPDATE nas
tabelas de SISTEMA...

Experimente fazer algo semelhante em ORACLE e/ou DB2 (bancos pagos) e veja o
resultado...

Ou seja, o problema não é o banco de dados, mas sim a diferença de postura
dos profissionais diante de um banco pago e/ou free.

Atenciosamente
_____________________________________________
Eduardo Jedliczka - Membro do TeamFB

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Davi Eduardo Borges Wall
Enviada em: segunda-feira, 10 de dezembro de 2007 16:48
Para: FireBase
Assunto: [firebase-br] Primary keys não estão NOT NULL

Olá a todos, hoje estou pedindo ajuda rs...

Ocorre que tenho uma base que tem uma característica estranha. 

Tenho 1181 tabelas nessa base, quase todas contém primary key. Essas tabelas
que contém PK, 
o campo PK não está como not null em RDB$fields, o que é muito estranho.

Efetuando alguns testes, descobri que quando executado este comando  create
table teste (num integer primary key)
o campo PK automaticamente é configurado como NOT NULL. Então em tese não há
como existir uma primary key não sendo not null.

Ainda em meus testes, se eu criar uma tabela com um campo PK, após a criação
da tabela eu consigo "desligar" not null.
O que seria um erro. Mas tudo bem eu não exijo muito de um banco Free.

Bom a situação que tenho é esta acima. Não sei como aconteceu, mas a maioria
das tabelas com PK estão com o campo PK como não not null.

Em RDB$Fields eu não encontrei (aparentemente) nenhum flag que indiquei que
o campo é um PK.
O que eu estou pensando em fazer é descobrir o nome do campo da PK e fazer
um update direto nos RDB$'s para força-los
novamente para not null.

Até pesquisei alguma coisa no Google groups mas não achei muita coisa
interessante.
Não precisam me dizer como fazer mas se me disserem qual tabela contém essa
informação já seria de grande ajuda.

Obrigado!

[]'s
Davi.

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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://firebase.com.br/pesquisa

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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://firebase.com.br/pesquisa


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.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://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista