Postgresql: usando o valor 'NULL' ao inserir e atualizar linhas com instruções preparadas

às vezes eu preciso inserir alguns valores nulos na tabela ou atualizá-los definindo o valor como NULL.

Eu li em algum lugar na documentação postgresql que isso não pode ser feito, mas pode sertrapaça com o valor padrão:

<code>pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)
</code>

p.s: eu sei que neste exemplo eu vou ter o mesmo resultado com

<code>pg_query("INSERT INTO my_table (col_a) VALUES ('whatever')
</code>

Mas os problemas vêm com as declarações preparadas:

<code>pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, default)");
pg_exec($pgconn, 'insert_null_val', array('whatever'));
//this works, but
pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, $2)");
pg_exec($pgconn, 'insert_null_val', array('whatever', 'NULL'));
//insert into the table the string 'NULL'.
//instead using array('whatever', '') it assume the col_b as empty value, not NULL.
</code>

O mesmo problema vem com a consulta de atualização.

Eu acho que há uma solução, porque o pgmyadmin pode fazer isso (ou parece que pode), e está escrito eu php (eu não acho que ele não usa as instruções preparadas de qualquer maneira)

Se você está se perguntando por que eu preciso paly com valores nulos em minhas tabelas, deixe-me lançar um exemplo (talvez haja uma maneira melhor do que o valor nulo): suponho que eu tenho a tabela de usuário e o e-mail col: este pode estar vazio , mas é um índice único .. 2 e-mails vazios sãoigual e viola a restrição exclusiva, enquanto 2NULO os valores não são iguais e podem coexistir.

questionAnswers(1)

yourAnswerToTheQuestion