fields(username、deleted)に一意の制約を追加します。'deleted'のフィールドタイプをINTEGERに変更します。
削除操作中(トリガーで実行することも、実際にユーザーを削除する必要があるコードの一部で実行することもできます)、idフィールドの値を削除済みフィールドにコピーします。
このアプローチにより、次のことが可能になります。
- アクティブユーザーの一意の名前を保持する(削除済み=0)
- 同じユーザー名のユーザーを複数回削除できるようにする
次のシナリオは機能しないため、フィールド「削除済み」には2つの値しか含めることができません。
- ユーザー「Sam」を作成します
- ユーザーSamが削除されました
- userName'Sam'で新しいユーザーを作成します
- userName'Sam'でユーザーを削除しようとしました-失敗しました。すでにレコードuserName='Sam'があり、deleted ='1'