我的postgres数据库中有一个users
表,其中role
列使用了枚举.用户可以是CAPTAIN
或PLAYER
.
DROP TYPE IF EXISTS USER_ROLE CASCADE;
CREATE TYPE USER_ROLE AS ENUM ('CAPTAIN', 'PLAYER');
CREATE TABLE IF NOT EXISTS "user" {
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
role USER_ROLE NOT NULL
);
我需要创建一个连接表,将many CAPTAIN
个用户与many PLAYER
个用户连接起来.
我可以创建一个这样的表:
CREATE TABLE IF NOT EXISTS user_user (
user_captain_id INT,
user_player_id INT,
CONSTRAINT pk_user_user PRIMARY KEY (user_captain_id, user_player_id),
CONSTRAINT fk_user_captain FOREIGN KEY (user_captain_id) REFERENCES "user"(id),
CONSTRAINT fk_user_player FOREIGN KEY (user_player_id) REFERENCES "user"(id),
);
有没有办法添加约束,使user_captain_id
必须是具有CAPTAIN
角色的用户,而user_player_id
必须是具有PLAYER
角色的用户?