私はMySQLとPHPでデータベースアプリケーションを開発中です。この瞬間、私は最後のUPDATEによって引き起こされた変更を取得しようとしています。この問題を解決するための私の最初の方法は、UPDATE MySQL:最終更新の変更方法
- です
は、これらの
はこれを短縮する方法はあります... 3のmysql-接続されていますか?私はMySQLとPHPでデータベースアプリケーションを開発中です。この瞬間、私は最後のUPDATEによって引き起こされた変更を取得しようとしています。この問題を解決するための私の最初の方法は、UPDATE MySQL:最終更新の変更方法
は、これらの
はこれを短縮する方法はあります... 3のmysql-接続されていますか?私はそれを行う方法を教えて聞かせて、
私は、行の更新、最初に私が更新していると私はactive records
それらを呼び出すどの行を取得します。次に、active records
の各列をフォームフィールドと比較します。それがどの列が変更されたかを知る方法です。
変更された列を保存する場合は、history
のようなテーブルを作成します。
id (for primary key)
tablename (which table i'm updating)
recordid (which row i'm updating)
column (which columns has been changed)
oldvalue (active record value)
newvalue (form value-updated value)
date (obvious)
user (who did this change)
その後、使用する方法に想像力を使用することができます。
また、あなたは(更新日時、ユーザなど)を保存したい追加の状態データ
が含まれている履歴テーブルにレコードの全体のコピーをプッシュしますbefore update triggerをこの方法を行うことができますがありますどのようなレコードで起こったのかについて完全な改訂履歴があり、それは透過的に起こるはずです。履歴テーブルから一意の制約を削除する必要があることだけを覚えておいてください。
これが役に立ちます。
フォームをローカルに読み込んだときに元の状態を保存してから、アップデートで送信しているものをローカルで比較してください。変更を把握するためにMySqlを呼び出す理由はありません。 – JCleveland
とにかく、あなたは基本的にメモリに意図した "新しい"状態を持っているので、少なくとも2番目のSELECTを保存することができます。あなたのUPDATEが何のエラーも報告しない限り、あなたはデータベースの状態があなたの思うものになるという事実にかなり依存することができます。もっと言ってみると、そのデルタを使って何をしようとしているのか正確に知ることはいいでしょう。 – joerx
影響を受ける行の数を特定するだけで済みますか、詳細なデータ比較が必要ですか? –