中学受験専門 理科総合研究所 −理総研−

フロントページへ
Name:
Pass:
RSS
: ユーザー登録はコチラ :
左 理総研:技術情報と開発メモ 右

015:テーブルの最終更新日時を取得する

対象言語:PHP / MySQL
キーワード:PHP MySQL テーブル データ 最終 更新 日時 取得 update Update_time MyISAM
SHOW TABLE STATUSを使ってカレントデータベース(現在アクセス中のデータベース)にあるテーブルの情報を取得する方法です。特定のテーブルの情報のみを取得したい場合は、LIKE演算子を使ってテーブル名をパターンマッチングさせます。
SHOW TABLE STATUSで得ることができる情報は[ @12.5.4.27. SHOW TABLE STATUS 構文 ]を参照して下さい。 ただし、ストレージ・エンジンによっては情報が不正確だったりNULLが返ってきたりします。
MyISAMなら特に問題なしですが、InnoDBの場合以下の方法では最終更新日時を取得できません
  • カレントデータベースのテーブル「torihiki」の最終更新日時を取得します。LIKE演算子で「torihiki」と完全に一致するテーブル名をパターンマッチさせているので、得られた結果をwhile等で回す必要はありません。

$sql = "SHOW TABLE STATUS LIKE 'torihiki'";
$result = mysql_query($sql, $link) or die(mysql_error());
$rec = mysql_fetch_assoc($result);

echo $rec['Update_time'];

// 出力>> 2013-02-06 04:00:47

  • もしすべての、あるいはパターンマッチで複数のテーブルの情報を取得したい場合は次のようにします。以下の例では、テーブル名が「torihiki」で始まるものすべて、をパターンマッチさせています。

$sql = "SHOW TABLE STATUS LIKE 'torihiki%'";
$result = mysql_query($sql, $link) or die(mysql_error());

while ($rec = mysql_fetch_assoc($result)) {

	echo $rec['Name'] . " : " . $rec['Update_time'];

}

  • SHOW TABLE STATUSで一般的によく使いそうなのは、
    Name ・・・テーブル名
    Auto_increment ・・・次のAUTO_INCREMENT値
    Create_time ・・・テーブルを作成した日時
    Update_time ・・・テーブルのデータが最後に更新された日時
    ぐらいでしょうか。
著者 You Mizuguchi
© 2011 System-iDO IT Devisers