私はMySQLでバックアップされているアプリでAudit Trailを最適に実装する方法を検討しています。いくつかのシステムが同じデータベースとテーブルにアクセスするので、私はトリガーが最善の解決策であると考えました。MySQLの副選択からフィールド=>値のペアを取得する方法はありますか?
しかし、手動でテーブルごとにトリガを書きたくないので、各挿入/削除のフィールド名とデータを自動的に記録するようにしています。等
何か:
INSERT INTO `audits` SET
`table_name` = 'jobs',
`table_key` = OLD.`id`,
`changed_at` = NOW(),
`notes` = (SELECT * FROM NEW);
しかし、副選択文字列として扱うことができない単一の行の結果セットを返します。私はその行を取ってそれに変換する関数を望んでいます:
"id = 1, name = 'something', another_field = 'data'"
またはそういうものです。
編集:ここでのポイントは、すべてのテーブルのすべてのフィールドに入力する必要はないということです。 120以上のテーブルがあり、100以上のフィールドがあります。 MySQL自体では不可能な場合は、それぞれのテーブルとフィールドを回転させてSQLを生成するための小さなプログラムを作成します。 yourtable
FROM
ポイントは、すべてのテーブルのすべてのフィールドに入力する必要はないということです。 120以上のテーブルがあり、100以上のフィールドがあります。 これが可能でない場合、私は各テーブルとフィールドを回転してSQLを生成するための小さなプログラムを書く必要があると思います。 – Drarok