1

(MySQLデータベースのテーブルにVARCHAR)フィールドがあり、セット全体の同じフィールドの他の行と比較して、各エントリを一意にする必要があります。

ただし、これらの一意の文字列の1つを削除した後、このフィールドの他のレコードを挿入および更新できるようにして、以前に使用されていた一意の値を使用できるようにします。

問題は、Unique制約がすべての「削除された一意の文字列」を記憶しているように見え、以前に使用された(ただし現在は削除されている)文字列を更新または追加できないことです。

セットが常に別個でなければならないことを指定できるが、以前に削除された一意VARCHARs性が制限されないという別の制約はありますか?

4

1 に答える 1

2

いいえ、そのようには機能しません。

テーブルから値を削除すると、テーブルに一意の制約がある場合でも、その値を再度挿入できます。

潜在的な問題の1つは、ソフト削除を使用する場合です。つまり、is_deletedフィールドを1に設定して行を削除済みとしてマークする場合です。この場合、ソフト削除された値により、一意の制約が意図したとおりに機能しなくなります。しかし、ここではそうではないようです。

于 2012-07-16T23:07:02.447 に答える