Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pshift

Gravar NULL ao invés de branco

Recommended Posts

Gente,

tenho um formulário imenso num sistema meu,

e nem todos os campos são obrigatórios.

 

Porém os campos que não forem obrigatórios e não forem informados,

eu gostarico de daa que fossem armazenados no bandos como NULL

e não como campo em branco como está acontecendo.

 

Até tentei fazer uma verificação no método cadastrar antes de salvar no bd.

if($dados['numcgc']==''){

$dados['numcgc'] = 'NULL';

}

Mas desse jeito, salva o NULL como string... fica um NULL forçado...

 

Dando uma pesquisada eu achei a solução de colocar NULL como valor default

da tabela do banco de dados.

Mas funciona pra quando o campo ficar em branco?

Que eu saiba, o default só funciona caso o campo seja ignorado(não usado) no formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você colocar aspas, será gravado o que esta sendo informado:

 

insert tabela (campo, ...) values ('null', ...)

 

Então seus comandos SQL devem ficar assim:

 

insert tabela (campo, ...) values (null, ...)

update tabela set campo=null, ... where condicao

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor default é para colocar algo quando o campo for NULL.

 

No seu Sistema pode estar ocorrendo :

Existem definições de valor NULL para os campos em questão.

Triggers podem estar alterando os valores informados.

 

Para gravar NULL basta não informar os valores*, se não houver constraints nas colunas é o que será gravado NULL.

 

--

*-Exemplos

 

tabela
------
coluna1 number
coluna2 number

 

 

insert into tabela (coluna1,coluna2) values (1,null);

 

 

insert into tabela (coluna1) values (1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog, eu tentei colocar pro campo receber null (sem aspas) caso fosse vazio

e mesmo assim ele continua recebendo vazio no banco de dados.

 

Motta desse jeito que você fez no código, é como se nem existisse o 2º campo

no formulário. Então realmente ele gravaria null.

Da forma que eu quero, o campo está no formulário, e pode ser ou não informado.

Então ele de qualquer jeito é inserido no banco de dados.

Eu só quero que quando ele seja vazio (campo='') o campo receba null (campo=null)

coisa que não tá dando certo =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

A Aplicação que deve estar fazendo este tratamento de trocar nulos por brancos.

 

Os campos na tabela estão definidos como NULL or NOT NULL ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como ver se algo na aplicação força os brancos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pshift, a afirmação do prog está correta.

A unica forma de você estar inserindo NULL como texto é colocando o null entre aspas simples. Se você está fazendo algo como abaixo, então ele vai inserir o NULL corretamente.

 

inserto into tabela (nome, sobrenome, email) values ('meunome',null, 'meuemail')

 

pode fazer assim que se estiver tudo configurado corretamente ele funciona. Se não, voce tem que ver no seu sistema questões de constraints no banco de dados ou algo no sistema que esteja trocando o valor e voce nao esteja percebendo.

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você montar seu sql dinamicamente no seu programa, pode fazer com que o insert só envie para o banco os campos que serão preenchidos e os demais campos automaticamente serão nulos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.