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