0

「連絡先」という名前の次のテーブルがあると仮定します。

id|name|age
1|John|5
2|Amy|2
3|Eric|6

コンピューター上のファイルのチェックサムを取得するときにsha/md5ハッシュがどのように機能するかと同じように、このテーブルが変更されるかどうかを確認する簡単な方法はありますか?

したがって、たとえば、このテーブルに新しい行が追加された場合、またはテーブル内で値が変更された場合、「ハッシュ」または生成された値は、テーブルが変更されたことを示します。

直接的なメカニズムがない場合、これを行うための最良の方法は何ですか(メソッドがパフォーマンスとレイテンシーの最小化に重点を置いている限り、任意のハッシュメカニズムである可能性があります)?複数のテーブルに適用できますか?

4

3 に答える 3

1

SQLを介してその情報を取得する直接的なメカニズムはありません。

各行にLastModified列を追加することを検討できます。テーブルが最後に変更された時刻を知るには、その列の最大値を選択します。

INSERT、UPDATE、およびDELETEのテーブルでトリガーを使用して、同様の結果を得ることができます。これにより、最後に変更されたタイムスタンプで別のテーブルが更新されます。

于 2013-03-15T18:26:12.277 に答える
0

何かが変わったかどうかを知りたい場合は、比較するものが必要です。たとえば、日付。テーブル名とタイムスタンプの2つの列を持つテーブルを追加し、制御するテーブルのイベントのトリガーをプログラムできるため、このトリガーはこの制御テーブルのタイムスタンプ列を更新します。

于 2013-03-15T18:28:38.927 に答える
0

テーブルが大きすぎない場合は、テーブル全体のコピーをとることができます。変更を確認する場合は、古いデータと新しいデータをクエリできます。

drop table  backup_table_name;
CREATE TABLE backup_table_name LIKE table_name;
INSERT INTO backup_table_name SELECT * FROM `table_name`;
于 2013-03-15T18:28:54.763 に答える