在CREATE语句中将列的默认值设置为另一列的值?

时间:2016-10-26 01:03:02

标签: sql postgresql

在创建新表时,如何将列的默认值设置为同一个表中的另一列值?

所以例如:

CREATE TABLE app_version
(
  id serial NOT NULL,
  version_name character varying(50),
  version_number numeric
)

如果没有提供姓名,我希望version_nameversion_number

我可以version_name character varying(50) default version_number吗?

这可能吗?如果是这样,怎么样?感谢

我似乎无法在论坛上发现任何相关内容,它始终处于INSERT或UPDATE状态。

1 个答案:

答案 0 :(得分:2)

documentation非常明确,默认值不能引用其他列:

  

DEFAULT default_expr

     

DEFAULT子句为其列分配默认数据值   列定义它出现在。该值是任何无变量的   表达式(子查询和对其他列的交叉引用)   不允许使用当前表格。默认的数据类型   表达式必须与列的数据类型匹配。

     

默认表达式将用于任何插入操作   不指定列的值。如果a没有默认值   列,然后默认为null。

因此,您无法使用DEFAULT子句执行所需操作。