PostgreSql 列唯一且不为空

use*_*754 5 sql database postgresql

我的问题是使列电子邮件不为空且唯一

\n\n
ALTER TABLE benutzer ADD email VARCHAR(75) UNIQUE;\n
Run Code Online (Sandbox Code Playgroud)\n\n

工作正常但是

\n\n
ALTER TABLE benutzer ADD email VARCHAR(75) UNIQUE NOT NULL;\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
ALTER TABLE benutzer ADD email VARCHAR(75) UNIQUE ,NOT NULL;\n
Run Code Online (Sandbox Code Playgroud)\n\n

工作不好:-(

\n\n

错误是:

\n\n
\n

FEHLER: \xe2\x80\x9eNULL\xe2\x80\x9c 的语法错误

\n
\n\n

我不明白 Postgresql 的问题 >.<

\n\n

编辑:

\n\n

我已经解决了问题。\n问题的解决方案是删除表中的记录。

\n

Zaf*_*fer 1

当包含现有记录时,无法添加同时为 UNIQUE 和 NOT NULL 的新列。

这样做的原因是因为添加列一开始就赋予了空值,同时又说不允许空值是一个矛盾。

  1. 解决方案是删除数据,添加列,然后将数据添加回来

或者

  1. 为新列创建唯一的默认数据

或者

  1. 首先创建列,为其生成唯一数据,然后添加 NOT NULL

以供参考另一个包含更多信息的答案:Create uniqueconstraint with null columns