Postgres默认值为NULL和空字符串

时间:2014-04-03 09:57:48

标签: postgresql postgresql-9.2

通常,如果要插入的值为NULL,则使用默认值。有没有办法告诉postgres它应该在空字符串('')上使用默认值?

1 个答案:

答案 0 :(得分:6)

不,你不能直接这样做。

指定默认值的唯一有效方法是:

  • 要从INSERT列列表中省略该列;或
  • DEFAULTINSERT中的列明确指定关键字UPDATE

NULL''都不是请求列默认值的有效方法。

如果您希望使用默认值替换NULL'',则必须使用BEFORE ... FOR EACH ROW触发器来执行此操作。

制作通用的并不是特别简单,因为在分配触发器中的DEFAULT元组时,您无法使用NEW关键字;您必须查找系统目录以获取默认表达式。

当然,如果你知道它,你可以随时重复触发器中的默认表达式,并且不介意编写特定于它的触发器。

总而言之,最好修复应用程序,使其符合标准,并且不希望数据库用默认值替换NULL''