SQLiteな休日
1. 主キーの値を決める

[SQLiteなお気に入り] では主キー(id)を決めるのに INTEGER PRIMARY KEY を使いました。
勝手に一意の数値を割り当ててくれるので、これはこれで便利なのですが、掲示板などのスレッドに対してレスがつく形式の場合、私は
idreidtitlecomment
11スレッドタイトルコメント
21Re:スレッドタイトルコメント
というように、スレッドの先頭の行は主キーと同じ値の reid を書いて、reid が同一の行をひとつのスレッドとしているので、 id の値が決まった時にその値を取得して reid として定義出来ないとまずいのです。
そこでこのさい INTEGER PRIMARY KEY による主キーの決定をやめて、手動で主キーを決めたいと思います。

テキストファイルですと全ての行を走査して最大行を求めてから、+1 したものを新たな主キーとしていました。
SQLには

SELECT MAX(xx) FROM table

というフィールドの最大値を求める便利な関数があります。
実際に [SQLiteなお気に入り] のデータから idフィールドの最大値を取得してみましょう。

<?php
$logfile = "../favorites/db/favorites.db"; //データベース(ログファイル)定義
$data = sqlite_open ("$logfile"); //オープン
$query = "SELECT MAX(id) FROM table1"; //クエリの定義(idの最大値を求める)
$result = sqlite_query ($data,$query); //実行
$arr = sqlite_fetch_array ($result); //配列
$maxno = $arr[0]; //idフィールドの最大値
print "maxno=" . $maxno; //表示
sqlite_close ($data); //切断
?>

実行
2014.2.4 last edit

Produced by haku