相关疑难解决方法(0)

Postgresql:在使用预准备语句插入和更新行时使用'NULL'值

有时我需要在表中插入一些空值,或更新它们将值设置为NULL.

我这个不能做PostgreSQL文档在其他地方见过,但可以tricket使用默认值:

pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)
Run Code Online (Sandbox Code Playgroud)

ps:我知道在这个例子中我会得到相同的结果

pg_query("INSERT INTO my_table (col_a) VALUES ('whatever')
Run Code Online (Sandbox Code Playgroud)

但问题来自准备好的陈述:

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.
Run Code Online (Sandbox Code Playgroud)

更新查询也会出现同样的问题.

我认为有一个解决方案,因为pgmyadmin可以做到(或者看起来像它可以),并且我写的是php(我不认为它不会使用准备好的语句)

如果你想知道为什么我需要在我的表中使用空值,让我举一个例子(也许有一个比null值更好的方法):假​​设我有用户表,并且电子邮件col:这个可以为空,但是是唯一的索引.2空电子邮件是相同的并且违反了唯一约束,而2个NULL值不相等并且可以共存.

php postgresql null prepared-statement

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

null ×1

php ×1

postgresql ×1

prepared-statement ×1