2012-10-16 40 views
0

我有横跨两列user_idcountry_id创建基于三列MySQL的唯一密钥和一个特定的值

我添加了一个新列deleted_at这样我就可以删除,同时保持数据行具有唯一索引的表。

我现在要更新唯一密钥,以便它基于user_id,country_iddeleted_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行没有设置新的行可以被创建。

+0

user_id和country_id通过表重复。你将如何从他们的组合中获得独特的关键? –

回答

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 Syntax这只适用于BDB存储。

相关问题