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

承認付きのデータベース編集-mysql

    私たちのサイトの1つに似たようなものがあり、たくさんのテーブルを追加しました:

    users sites ...など

    次に、たくさんのシャドウテーブルがあります:

    users-shadow sites-shadow ...など

    シャドウテーブルは、変更を加えたユーザーの行が追加されていることを除いて、実際のテーブルと同じ構造になっています。したがって、最初に、データベースアクションを承認する必要があるユーザーによって変更が送信されたときに、このクエリを使用します。

    REPLACE INTO users-shadow (user_mod,id,username,password,salt...) VALUES (16,50,'bob','stuff','salt'...);
    

    明らかに、これがインジェクションに対して開かれていないことを確認してください。プリペアドステートメント など

    承認されると、shadowの行 テーブルはshadowから削除されるだけです テーブル、user_mod 値が削除され、変更(null以外の値)が実際のテーブルに挿入されます(またはidの場合は更新されます REPLACE を使用して指定されます 構文)。このロジックはperlで実行するため、残念ながらSQLが手元にありません。

    SQL REPLACEであることを忘れないでください DELETEを実行します およびINSERT UPDATEではなく 。この動作を可能にするには、トリガーを修正する必要があります。

    注:「承認」フラグを使用しなかった理由は、既存のレコードを修正する機能が必要だったためです。もちろん、同じ主キーを持つ複数のレコードを持つことはできませんでした。



    1. djangoORMのFrom句にサブクエリを記述する方法

    2. すべての列の最も一般的な値を取得します

    3. ルーチンxxxのOUTまたはINOUT引数1は、BEFOREトリガーの変数またはNEW疑似変数ではありません

    4. ORACLEでVARCHARのXMLTYPEを変換するにはどうすればよいですか?