【发布时间】:2017-08-03 02:35:11
【问题描述】:
我已经阅读了一些类似的问题和答案,但我并没有完全理解这个问题。我目前的一个猜测是 Potgres 可能不允许非主键的外键。
用户:
用户注册,每行1个用户,每行1个id(序列),唯一电子邮件(主键)
user_logins:
关于用户登录的信息,从用户中引用 user_id 作为外键,其余列一起构成复合主键
CREATE TABLE users
(
unique_email TEXT NOT NULL,
password TEXT NOT NULL,
user_id SERIAL,
created_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP,
CONSTRAINT emailPK
PRIMARY KEY(unique_email)
);
CREATE TABLE user_logins
(
user_id SERIAL,
login_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT LOCALTIMESTAMP,
login_ip INET,
CONSTRAINT user_idFK
FOREIGN KEY (user_id)
REFERENCES users(user_id)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT composit_PK_logins
PRIMARY KEY(user_id, login_date, login_ip)
);
【问题讨论】:
标签: sql postgresql