我有一个表,我为其中的一些列提供了默认值。我想创建一个函数,其参数对应于将在将任何空值修改为列的默认值后在表中插入记录的列。我不想根据哪些参数为空来以编程方式构造查询。基本上我想要类似的东西
INSERT into Table (c1, c2, c3, c4)
Values (coalesce(somevar, DEFAULT(c1)), ...)
这可能吗?我已经看到mysql 可以做到这一点。postgres 是否提供类似的功能?我使用的是 9.1 版
更新:这个问题提供了一些有趣的解决方案,但不幸的是结果总是文本。我想将默认值作为其真正的数据类型,以便我可以使用它来插入它。我试图找到一种解决方案,将默认值从文本转换为其数据类型(以文本形式提供),但我找不到方法:
SELECT column_name, column_default, data_type
FROM information_schema.columns
WHERE (table_schema, table_name) = ('public', 'mytable')
AND column_name = 'mycolumn'
ORDER BY ordinal_position;
以上将 column_default 和 data_type 作为文本返回,那么如何将 column_default 转换为 data_type 的值?如果我能做到这一点,那么我的问题就迎刃而解了。