勉強:MySQL-Auto_increment

 ネットをあさってみてもなかなか出てこなかったのは、基本中の基本だったからなのかも知れないが、リファレンスを引くのが面倒な初心者と向けにニッチな情報として残しておく。
 PHP+MySQLでこのブログのようなものをつくっているが、IDがパーマリンクに関係する。遅筆な方なので一旦アップロードしても、やっぱり変更ないし削除ということがしばしばあるというか、しょちゅうある。データベースに登録しては消しを続けるのだが、IDにAuto_incrementを設定しているために、削除してもその次からの番号がまた振られてしまう。下手をすると10個飛ばしとかになるので多少不細工。それだけなのだが、こんなことがO型のくせに見逃せない小さな男である。過去の記事を消した場合はやむを得ないが、ほとんど誰も見ていないような最新記事を消した場合は、数字を元に戻したい。そこで記事テーブルの最大のIDと、Auto_incrementの値を比較する構造が必要になる。
 前者は、「 SELECT MAX(id) FROM db 」で可能。問題は後者。最終的には「 SHOW TABLE STATUS LIKE table 」で取得したものから、PHPでAuto_incrementを抽出する方法で応急手当。
$res = mysql_query("SHOW TABLE STATUS LIKE 'table'");
while($r = mysql_fetch_assoc($res)){
$ai = $r[Auto_increment];
}
参考: 「とても役立つSHOWステートメント」
※よく考えたら使用頻度によってはAuto_incrementにする意味ないし、毎回 MAX+1 にすればいいだけではないか。嗚呼、バカめ…。終戦記念日にちなんで、平和ボケということにしておきたい。
リンク・コメント(0)
リンク・トラックバック:
コメント: