我不知道如何在标题中解释这一点,但我所拥有的是这样一个表:
user_id | subscription_id
6 12
6 10
12 6
4 12
每个用户都可以订阅所有其他用户,但是可以阻止用户通过INSERT查询两次订阅其他用户吗?
由于我的subscription_id不是唯一的,所以会发生这种情况:
user_id | subscription_id
6 12
6 12
我想避免这种情况。据我所知INSERT IGNORE,INSERT UPDATE和ON DUPLICATE仅适用于唯一键。
答案 0 :(得分:0)
您需要将数据库表设置为具有user_id AND subscription_id
的复合主键这样,每一行的每一行都必须是唯一的。
答案 1 :(得分:0)
确保元组不能在单个表中出现多次的唯一可靠且简单的方法是:
使用跨越唯一键
使用生成主键
可能触发
前两个大致相同,但唯一键也将空值视为不同,因此可能对您不起作用。
ALTER TABLE user_subscriptions ADD PRIMARY(user_id, subscription_id);