0

2 つの列にまたがる一意のインデックスを持つテーブルがありuser_idcountry_id

deleted_atデータを保持しながら行を削除できるように、新しい列を追加しました。

user_idに基づいて、IS NULLcountry_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 が設定されていない場合、新しい行を作成できました。

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 に答える