2016-03-28 15 views
1

commitより前に同じトランザクションで削除された行を「参照」することはできますか?同じトランザクションで削除された行をフェッチ/選択する

私はそれが可能のような音はありません...だから私は編集したい私は、カスケード制約によって

更新

を削除され、削除された行を選択する必要がTRIGGER AFTER DELETEでこれを行う必要があり

私の質問は少し..それは可能です/ TRIGGER BEFORE DELETEの行IDを収集し、TRIGGER AFTER DELETEにそれらを送信する高速な方法はありますか?

+0

[this](http://stackoverflow.com/questions/6924823/how-to-recover-just-deletedrows-in-mysql)が役立ちます。 –

+0

削除クエリは何も返しません。しかし、あなたは "削除する前に"トリガを持って、関連するレコードを一時テーブルにコピーしてから選択することができます。 –

+1

AFAIKトリガはCASCADEでは機能しません。 –

答えて

0

。これをする必要はありませんが、多分この情報はあなたを助けるでしょう。

一般に、誰かに削除権限を与えることはお勧めしません。偶発的な削除は悲惨な結果を招く可能性があります。削除を実行する代わりに、削除のために行をマークし、フロントエンド側で非表示にするだけです。その後、必要に応じて手動で削除することもできます。

削除するものを確認するには、最初にDELETEを実行する代わりに、クエリを最初に印刷するか、削除しようとしている行が表示されるスクリプトを準備する必要があります。あなたのセキュリティを傷つける可能性があります。あなたが削除しようとしているアイテムの量を確認したい場合は、まずSELECT COUNTのアイテムを削除して、「xアイテムを永久に削除しようとしています。

テストに必要な場合は、削除したものなどを表示するには、MySQL Server Logsを使用してください。デフォルトではオフになっているかもしれませんが、設定によって異なります(通常、デフォルトではエラーログだけが有効になっています)。その後、一般クエリログをチェックすることができますが、実行されたクエリのみをログに記録するので、誰かがDELETE FROM x WHERE y=zを実行したことがわかりますが、実際に削除された値は表示されず、実行されたクエリのみが表示されます。また、一般的なクエリログは、ワークフローに応じて非常に速く成長することができます。一方、エラーが発生する前に特定のユーザーが最後に何をしたのかについての大きな洞察が得られます。

これはあなたを助ける?特定のトピックに関する詳細情報が必要な場合はコメントを投稿し、それに応じて編集します。

関連する問題