Sql 错误:没有唯一的约束匹配引用表的给定键;“用户”;

Sql 错误:没有唯一的约束匹配引用表的给定键;“用户”;,sql,postgresql,Sql,Postgresql,我已经通读了一些类似的问题和答案,但我不理解这个问题。我目前的猜测之一是Potgres可能不允许非主键的外键加密 用户: 用户注册,每行1个用户,每行1个id(串行),唯一电子邮件(主键) 用户登录: 关于用户登录的信息,引用用户的用户id作为外键,其余列一起构成复合主键 user\u id必须在users表中具有unique约束。否则,它将有歧义 在这个查询中,我在user\u id CREATE TABLE users ( unique_email TEXT NOT NULL

我已经通读了一些类似的问题和答案,但我不理解这个问题。我目前的猜测之一是Potgres可能不允许非主键的外键加密

用户:

用户注册,每行1个用户,每行1个id(串行),唯一电子邮件(主键)

用户登录:

关于用户登录的信息,引用用户的用户id作为外键,其余列一起构成复合主键



user\u id
必须在
users
表中具有
unique
约束。否则,它将有歧义

在这个查询中,我在
user\u id

CREATE TABLE users
(
    unique_email    TEXT NOT NULL,
    password        TEXT NOT NULL,
    user_id         SERIAL UNIQUE,
    created_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP,    

    CONSTRAINT emailPK
                    PRIMARY KEY(unique_email)
);

@Holland Serial不保证它有唯一的价值。您始终可以手动将其设置为任意数字。
CREATE TABLE users
(
    unique_email    TEXT NOT NULL,
    password        TEXT NOT NULL,
    user_id         SERIAL UNIQUE,
    created_date    TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP,    

    CONSTRAINT emailPK
                    PRIMARY KEY(unique_email)
);