3
有时我需要在表中插入一些空值或更新它们,将值设置为NULL。Postgresql:在使用预处理语句插入和更新行时使用'NULL'值
我PostgreSQL文档,这不能做在其他地方见过,但可以tricket使用默认值:
pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)
PS:我知道,在这个例子中我将有与
pg_query("INSERT INTO my_table (col_a) VALUES ('whatever')
但问题同样的结果来witht预处理语句:
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.
更新查询出现同样的问题。
我觉得这是一个解决方案,becose pgmyadmin可以做到这一点(或看起来像它可以),并写入我的PHP(我不认为它不使用准备好的语句反正)
如果youre想知道我为什么需要在我的表中添加空值,让我举一个例子(也许有更好的方法来处理空值):假设我有用户表和email col:这个可以是空的,但是是唯一的索引.. 2空电子邮件地址是等于并违反了唯一约束,而2个值不相等且可以共存。
我是一个白痴 - 为什么我没有想到呢? – Strae 2009-06-22 14:34:59