基于三列和特定值创建mysql唯一键

时间:2012-10-16 16:07:06

标签: mysql unique-key

我有一个表格,其中包含两列user_idcountry_id

的唯一索引

我添加了一个新列deleted_at,因此我可以在保留数据的同时删除行。

我现在想要更新唯一键,使其基于user_idcountry_id,其中deleted_at为空。这有可能,如果是这样的话?

+----+---------+------------+------------+
+ 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行,则可以创建新行。

1 个答案:

答案 0 :(得分:0)

修改你的表mytable应该可以解决问题:

alter table mytable drop index user_country;
alter table mytable add 
unique index user_country_deleted (user_id, country_id, deleted_at);

编辑:我太快了。根据{{​​3}},这仅适用于BDB存储。