sql >> データベース >  >> RDS >> Mysql

ソフト削除、一意キー、および外部キー制約のあるMySQL

    fields(username、deleted)に一意の制約を追加します。'deleted'のフィールドタイプをINTEGERに変更します。

    削除操作中(トリガーで実行することも、実際にユーザーを削除する必要があるコードの一部で実行することもできます)、idフィールドの値を削除済みフィールドにコピーします。

    このアプローチにより、次のことが可能になります。

    • アクティブユーザーの一意の名前を保持する(削除済み=0)
    • 同じユーザー名のユーザーを複数回削除できるようにする

    次のシナリオは機能しないため、フィールド「削除済み」には2つの値しか含めることができません。

    1. ユーザー「Sam」を作成します
    2. ユーザーSamが削除されました
    3. userName'Sam'で新しいユーザーを作成します
    4. userName'Sam'でユーザーを削除しようとしました-失敗しました。すでにレコードuserName='Sam'があり、deleted ='1'


    1. MySQL ISNULL()の説明

    2. 修正されたエラーを与える入力タイプのテキストフィールド2147483647

    3. MySQLマルチカラム主キー

    4. InnoDBmySQLがONDELETESETDEFAULT'を設定できません。設定方法は?