Postgresql Postgres默认值为NULL且为空字符串

Postgresql Postgres默认值为NULL且为空字符串,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,如果要插入的值为空,通常使用默认值。有没有办法告诉postgres它也应该在空字符串(“”)上使用默认值?没有,您不能直接这样做 指定默认值的唯一有效方法是: 从插入列列表中省略该列;或 要为插入或更新中的列显式指定关键字DEFAULT NULL或'都不是为列请求默认值的有效方法 如果要用默认值替换NULL或',则必须在。。。对于每一行触发此操作 创建一个通用元组并不是特别简单,因为在为触发器中的NEW元组赋值时,不能使用DEFAULT关键字;相反,您必须在系统目录中查找默认表达式 当然,如

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

没有,您不能直接这样做

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

  • 插入
    列列表中省略该列;或
  • 要为
    插入
    更新
    中的列显式指定关键字
    DEFAULT
NULL
'
都不是为列请求默认值的有效方法

如果要用默认值替换
NULL
'
,则必须在。。。对于每一行触发此操作

创建一个通用元组并不是特别简单,因为在为触发器中的
NEW
元组赋值时,不能使用
DEFAULT
关键字;相反,您必须在系统目录中查找默认表达式

当然,如果您知道触发器中的默认表达式,并且不介意对特定于它的触发器进行编码,则始终可以在触发器中重复该表达式


总而言之,修复应用程序更好,这样它就遵循了标准,并且不希望DB用默认值替换
NULL
'

如果要插入的值为NULL,通常使用默认值。否。如果未发出值,则使用默认值。默认值的默认值为null。好的,我可以尝试使用触发器。您可以使用检查约束或
创建域非空文本作为文本检查(修剪(值)!=”
然后使用
某些列名称非空文本非空
作为列声明。