我可以在 Postgres 的添加列语句中创建命名的默认约束吗?

问题描述

我是 Postgres 的新手,想知道是否可以在 Postgresql 中创建一个命名的认值约束。我在 sqlServer Can I create a named default constraint in an add column statement in SQL Server? 中发现了类似的东西,但在 Postgresql 中找不到相同的东西。

为了提供一些上下文,我正在尝试向表中添加一列,并且在添加时我正在尝试将此命名约束添加到该列中。

任何帮助将不胜感激。

提前致谢

解决方法

像这样:

\d foo 
                 Table "public.foo"
  Column  |  Type   | Collation | Nullable | Default 
----------+---------+-----------+----------+---------
 fooid    | integer |           |          | 
 foosubid | integer |           |          | 
 fooname  | text    |           |          | 

alter  table foo add column bar varchar constraint u2_idx UNIQUE;
ALTER TABLE

 \d foo
                      Table "public.foo"
  Column  |       Type        | Collation | Nullable | Default 
----------+-------------------+-----------+----------+---------
 fooid    | integer           |           |          | 
 foosubid | integer           |           |          | 
 fooname  | text              |           |          | 
 bar      | character varying |           |          | 
Indexes:
    "u2_idx" UNIQUE CONSTRAINT,btree (bar)

更新。 要更接近您链接到的帖子所显示的内容:


alter  table foo add column baz varchar default ''  constraint nn_constraint NOT NULL;

\d foo
                             Table "public.foo"
  Column  |       Type        | Collation | Nullable |        Default        
----------+-------------------+-----------+----------+-----------------------
 fooid    | integer           |           |          | 
 foosubid | integer           |           |          | 
 fooname  | text              |           |          | 
 bar      | character varying |           |          | 
 baz      | character varying |           | not null | ''::character varying
Indexes:
    "u2_idx" UNIQUE CONSTRAINT,btree (bar)

虽然 NOT NULL 约束实际上并没有被命名。