问题描述
我是 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
约束实际上并没有被命名。