行を削除して削除された行の値を返すことは可能ですか?行を削除し、削除された行のIDを返す
例 DELETE FROM table where time <= -1 week SELECT all id that were deleted
行を削除して削除された行の値を返すことは可能ですか?行を削除し、削除された行のIDを返す
例 DELETE FROM table where time <= -1 week SELECT all id that were deleted
したい場合データベース内の操作を制御するには、JOURNALテーブルを使用することを検討することができます。これについてはhereの質問があります。
これらはミラーリングされたテーブルで、通常は実行された操作(更新、削除)を伴うトリガーによって作成されます。 "古い値"(現在の値は常にメインテーブルから取得できます)を保存します。
このように実装されている場合、ジャーナルテーブルからSELECTを選択して、必要なものを正確に取得できます。
あなたの例を与えるためにしよう:
表のUSER
CREATE TABLE USER (
INT id,
VARCHAR name
)
表USER_JN
CREATE TABLE USER_JN (
INT id,
VARCHAR name,
VARCHAR operation
)
その後、すべての操作のためにあなたがUSER_JNを移入し、すべての変更履歴を持つことができます(あなたはそれに制約を持つべきではありません)。
削除すると、operation
列の値はdelete
になります。これをチェックするにはselectを使用します。
「削除された行を選択する」というのは正確ではありませんが、それを可能にする方法です。
どういうわけか便利ですね。
Tomさん、ありがとう、私はこのルートに行くと思います。 –
ニース。このアプローチは、システムの監査にも適しています。乾杯。 – Tom
とは、単に
テーブルWHERE時間<。DELETE FROMテーブルFROM
SELECT ID = -1週間
情報のおかげでありがとうございました。 1つの行でそれを行う方法? –
もちろん、ストアドプロシージャを呼び出してください。 1行 – Drew
私はそれらの専門家ではありませんが、私が考えることができるのは、["trigger"](http://dev.mysql.com/doc/refman/5.7/en/triggers.html)を使用して、インフォメーション – Makaronodentro
http://stackoverflow.com/a/8602422/2908724 – bishop
@ bishopありがとうございましたが、最後に削除された行だけが動作するようです。 –