创建基于三列MySQL的唯一密钥和一个特定的值
问题描述:
我有横跨两列user_id
和country_id
创建基于三列MySQL的唯一密钥和一个特定的值
我添加了一个新列deleted_at
这样我就可以删除,同时保持数据行具有唯一索引的表。
我现在要更新唯一密钥,以便它基于user_id
,country_id
和deleted_at
IS NULL。这是可能的,如果是这样的话?
+----+---------+------------+------------+
+ id | user_id | country_id | deleted_at |
+----+---------+------------+------------+
+ 2 | 3 | 1 | NULL |
+ 3 | 3 | 1 | 2012-10-16 |
| 4 | 3 | 1 | 2012-10-15 |
+----+---------+------------+------------+
使用上述作为参考,行不能因为ID 2的添加,但是,如果第2行没有设置新的行可以被创建。
答
修改你的表MYTABLE应该做的伎俩:
alter table mytable drop index user_country;
alter table mytable add
unique index user_country_deleted (user_id, country_id, deleted_at);
编辑:我太快速。根据CREATE INDEX Syntax这只适用于BDB存储。
user_id和country_id通过表重复。你将如何从他们的组合中获得独特的关键? –