電子書籍の厳選無料作品が豊富!

sqlite3に挑戦中です。

これまでmysqlを使用していました。

sqlite3ですが、rowidというコラム(行番号)が自動的に付加しますね。

当初idとかnoというPRIMARY KEYをつけていたのですが、INSERTができないためidコラムをDrop Columnしました。

でも、抽出するときにrowidでSELECTしようと思ったら、抽出できるわけないですね。できる方法があったら、教えてください。

↓こんなふうにrowidをセットしようと思ったら見事に空白でした。file=
$s .= '<a href =./index.php?mode=check&file=' . $row["rowid"] . '>' . $row["name"] . '</a><br>';

ということはやっぱりid、noというプライマリーキーは必要でしょうか?
もちろんnameが一意なので条件設定できますが、スマートでない気がします。

AUTO INCREMENTしてくれないので、一々、値を入れていかないといけないのでしょうか?mysqlだったら、自動的に番号を付加してくれるので、NULLや空白を入れていたのですが。

つまらない質問ですが、確認のためよろしくお願いします。

A 回答 (2件)

>noという列を追加し、AUTOINCREMENTで定義しました。


>INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。

CREATE TABLE文と、INSERT文の記述を提示できませんか?

INSERT INTO 表名
VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定

あるいは、

INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない
VALUES(値1,値2,・・・)

いった記述にしていますかね?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

おかげさまでできました。

PRIMARY KEYと設定したら今度は自動的に連番が振られました。
さっきは振られなかったのに?

>INSERT INTO 表名
>VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定

>あるいは、

>INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない
>VALUES(値1,値2,・・・

という書き方も重視していきます。

ありがとうございました。

お礼日時:2009/05/04 02:50

SQLiteにもMySQLに似たAUTOINCREMENTがあるので、それを使えばいい話しでは?



SQLiteではMySQLの構文に比べて制限があるようで、

列名 INTEGER PRIMARY KEY AUTOINCREMENT

というように、マニュアル記載通りに、データ型やキーワードを指定しないと、うまく動作しなかったように記憶しています。

http://www.sqlite.org/lang_createtable.html

この回答への補足

回答ありがとうございました。

noという列を追加し、AUTOINCREMENTで定義しました。

INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。

どうしてかご存知でしたらまたご教授お願いします。

補足日時:2009/05/03 22:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!