0

我有一个跨两列具有唯一索引的表,user_id并且country_id

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

我现在想更新唯一键,使其基于user_idcountry_id并且deleted_atIS 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 行,则可以创建新行。

4

1 回答 1

0

修改你的表 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 语法,这仅适用于 BDB 存储。

于 2012-10-16T16:19:16.890 回答