我想知道在MySQL中是否有可能确保如果两列匹配则不可能出现双行。我正在处理代表关注者的表,所以看起来像这样:
+----------+------------+-------------+
| followID | followerID | followingID |
+----------+------------+-------------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 1 |
| 4 | 3 | 1 |
+----------+------------+-------------+
基本上意味着用户1正在跟踪用户2和3,用户2和3正在跟踪用户1。现在,我想避免在这里出现双重结果,因此我想要基于followerID和followingID的唯一性。目前,我运行两个查询来检查该行是否已经存在(使用SELECT),并且仅当它不存在时才允许新的INSERT。
但是,我想采取第二种安全措施,如果已经存在,则无法进行插入。所以我想避免这种情况:
+----------+------------+-------------+
| followID | followerID | followingID |
+----------+------------+-------------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 1 |
| 4 | 3 | 1 |
| 5 | 2 | 1 | *
| 6 | 1 | 3 | *
+----------+------------+-------------+
行5和6应该永远无法插入,因为它们已经在表中了。可以在MySQL中实现还是必须在服务器上对其进行检查?
答案 0 :(得分:0)
ALTER TABLE Follower
ADD CONSTRAINT [yourConstraintName]
UNIQUE(followerID, followingID)