ypi*_*ard 7 mysql sql constraints
我的问题很简单,但我不能说出来.我有一个用户表,每个用户都有id.
我想制作友谊表,但我不希望能够有重复的记录.意思不是这个:
id_user1 | id_user2
---------|----------
2 | 3
3 | 2
Run Code Online (Sandbox Code Playgroud)
我清楚了吗?
目前我为我的表创建了这个:
CREATE TABLE User(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
surname VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Friends(
id_user1 INT NOT NULL,
id_user2 INT NOT NULL,
PRIMARY KEY(id_user1, id_user2),
FOREIGN KEY (id_user1) REFERENCES User(id),
FOREIGN KEY (id_user2) REFERENCES User(id),
);
Run Code Online (Sandbox Code Playgroud)
[编辑1:]也许最佳做法是两次保存每条记录?双向?
Mar*_*ger -1
就 SQL 语言而言,您正在描述一个CHECK约束 - 对值的限制,它不是简单的、已定义的约束(例如外键或唯一性)之一。
但我不认为 mysql 尊重CHECK约束。我看到的通常建议是使用一个触发器,如果任何插入或更新尝试违反您的条件,该触发器会引发异常。