Postgresql: usando el valor 'NULL' cuando inserte y actualice filas con declaraciones preparadas

a veces necesito insertar en la tabla algunos valores nulos, o actualizarlos estableciendo el valor en NULL.

He leído en algún lugar de la documentación de postgresql que esto no se puede hacer, pero se puedetruco con el valor por defecto:

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

p.s: sé que en este ejemplo tendré el mismo resultado con

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

Pero los problemas vienen con las declaraciones 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>

El mismo problema viene con la consulta de actualización.

Creo que hay una solución, porque pgmyadmin puede hacer eso (o parece que puede), y está escrito en php (no creo que no use las declaraciones preparadas de todos modos)

Si se está preguntando por qué necesito relacionarme con valores nulos en mis tablas, permítame mostrar un ejemplo (tal vez haya una manera mejor que el valor nulo): suponga que tengo la tabla de usuarios y la columna de correo electrónico: esta puede estar vacía , pero es un índice único .. 2 correos vacíos sonigual y viola la restricción única, mientras que 2NULO Los valores no son iguales y pueden coexistir.

Respuestas a la pregunta(1)

Su respuesta a la pregunta