大家好我需要帮助来创建我的关系表。基本上它需要看起来像这样
user_one_id和user_two_id是来自用户表的外键,状态显示当前关系状态(0表示挂起,1表示好友,2表示拒绝,3表示阻止),action_user_id是最有效的用户的ID最新的状态字段更新。为了避免重复,我在user_one_id和user_two_id上添加了一个唯一的。现在我希望user_one_id 始终小于 user_two_id。这是我被困的地方。以下是我迄今为止提出的内容
CREATE TABLE IF NOT EXISTS relationship (
user_one_id NOT NULL,
user_two_id NOT NULL,
status ENUM ('0','1','2','3') NOT NULL,
action_user_id NOT NULL,
UNIQUE (user_one_id, user_two_id))
答案 0 :(得分:0)
向表中添加约束(假设外键是整数?)
CREATE TABLE IF NOT EXISTS relationship (
user_one_id INT NOT NULL,
user_two_id INT NOT NULL,
status ENUM ('0','1','2','3') NOT NULL,
action_user_id NOT NULL,
UNIQUE (user_one_id, user_two_id)
CONSTRAINT CHK_users CHECK (user_one_id < user_two_id)
)
这将保证只存储唯一的id对。
答案 1 :(得分:0)
我将在INSERT
级别上为您提供一个示例。
SET @id_one = 10;
SET @id_two = 20;
INSERT INTO relationship (user_one_id, user_two_id, status, action_user_id) VALUES (
(CASE
WHEN @id_one >= @id_two THEN @id_two
ELSE @id_one
END),
(CASE
WHEN @id_one >= @id_two THEN @id_one
ELSE @id_two
END),
0, <--- you need to set this one yourself
10 <--- you need to set this one yourself
);