• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sqlite3でrowid以外にid必要ですか?)

sqlite3でidは必要か?

このQ&Aのポイント
  • sqlite3を使用している際に、rowid以外にidを必要とするか悩んでいます。rowidは自動的に付加されますが、抽出する際には使用できません。教えてください。
  • idやnoといったプライマリーキーは必要でしょうか?nameが一意なので、条件設定できるとはいえ、スマートではありません。
  • sqlite3ではAUTO INCREMENTができないため、値を一つずつ入れていかなければなりませんか?mysqlのように自動的に番号を付加してくれないため、疑問です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>noという列を追加し、AUTOINCREMENTで定義しました。 >INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 CREATE TABLE文と、INSERT文の記述を提示できませんか? INSERT INTO 表名 VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 あるいは、 INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない VALUES(値1,値2,・・・) いった記述にしていますかね?

Scotty_99
質問者

お礼

回答ありがとうございました。 おかげさまでできました。 PRIMARY KEYと設定したら今度は自動的に連番が振られました。 さっきは振られなかったのに? >INSERT INTO 表名 >VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 >あるいは、 >INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない >VALUES(値1,値2,・・・ という書き方も重視していきます。 ありがとうございました。

その他の回答 (1)

回答No.1

SQLiteにもMySQLに似たAUTOINCREMENTがあるので、それを使えばいい話しでは? SQLiteではMySQLの構文に比べて制限があるようで、 列名 INTEGER PRIMARY KEY AUTOINCREMENT というように、マニュアル記載通りに、データ型やキーワードを指定しないと、うまく動作しなかったように記憶しています。 http://www.sqlite.org/lang_createtable.html

Scotty_99
質問者

補足

回答ありがとうございました。 noという列を追加し、AUTOINCREMENTで定義しました。 INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 どうしてかご存知でしたらまたご教授お願いします。

関連するQ&A