是否可以一次添加具有唯一约束的列?

Is it possible to add a column with unique constraint in one go?

我想将 email 列添加到具有 UNIQUE 约束的现有 table。是否可以用一个语句来做到这一点?

当我尝试时:

ALTER TABLE "Corporates"
ADD COLUMN "email" varchar(100) NOT NULL
CONSTRAINT "Corporates_email_key" UNIQUE ("email")

查询失败并出现错误:

ERROR:  syntax error at or near "("
LINE 3:     CONSTRAINT "Corporates_email_key" UNIQUE ("email")
                                                     ^
SQL state: 42601
Character: 120

OTOH 我可以单独 运行 以下两个陈述:

ALTER TABLE "Corporates"
ADD COLUMN "email" varchar(100) NOT NULL

然后:

ALTER TABLE "Corporates"
ADD CONSTRAINT "Corporates_email_key" UNIQUE ("email")

成功了。

您需要第二个 ADD 选项:

ALTER TABLE corporates
  ADD COLUMN email varchar(100) NOT NULL,
  ADD CONSTRAINT corporates_email_key UNIQUE (email);