質問: たとえば、ファイルであれば、編集した日付がメタデータとして存在するので、 最終更新日時がわかります。 ![画像の説明をここに入力](https://i.stack.imgur.com/2oli7.png) このような感じで、MySQLの例えば、`hoge_db`が更新されたかどうか。 つまり`hoge_db`が持つ複数テーブルのデータどれかに何かしらの変更があった最終日時を確認する方法はないでしょうか? --- 各テーブルが、updateのようなカラムを持って編集があれば自動で更新されupdateの一番今に近いやつというようなもの**ではなく**、MySQLの**メタデータ的なものを想定**しています。
回答: 本家SOにも同じ質問は見つけましたが、MySQL5.6まででの検証結果でした。 コメントにもありますように、MySQL5.7では取得できると補足していただきましたので、MySQL5.7.10ならびにMySQL5.5.37、MySQL5.6の3環境で動作検証いたしました。 具体的には以下のクエリを投げると取得できます。 ``` SHOW TABLE STATUS FROM [データベース名] ``` これで取得できる Update_timeの値が最終更新の時間です。 MySQL 5.7.10では取得可能ですので判別が可能です。 MySQL5.6までですとcoltware様の回答にもありますとおり、テーブルのエンジンによっては最終更新の時間は取得できません。 具体的にはInnoDBでは取得できず、MyIsamは取得できます。理由については のUpdate_timeの説明にもあり、 > > InnoDB stores multiple tables in its system tablespace and the data file timestamp does not apply. > > > InnoDBの場合は、複数のシステムテーブル領域に、複数のテーブルを格納しているので表示できない が理由のようです。さらに、MySQLデータベースがWindowsの場合は > > however, on Windows the timestamp is not updated by updates so the value is inaccurate. > > > と、ファイルのタイムスタンプも更新されません。 MySQL5.6までの場合の対策としては、回答にある のように、最終更新日時のカラムを追加するしか手がないのでは、のようです。