- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sqlite3でrowid以外にid必要ですか?)
sqlite3でidは必要か?
このQ&Aのポイント
- sqlite3を使用している際に、rowid以外にidを必要とするか悩んでいます。rowidは自動的に付加されますが、抽出する際には使用できません。教えてください。
- idやnoといったプライマリーキーは必要でしょうか?nameが一意なので、条件設定できるとはいえ、スマートではありません。
- sqlite3ではAUTO INCREMENTができないため、値を一つずつ入れていかなければなりませんか?mysqlのように自動的に番号を付加してくれないため、疑問です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>noという列を追加し、AUTOINCREMENTで定義しました。 >INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 CREATE TABLE文と、INSERT文の記述を提示できませんか? INSERT INTO 表名 VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 あるいは、 INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない VALUES(値1,値2,・・・) いった記述にしていますかね?
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.1
SQLiteにもMySQLに似たAUTOINCREMENTがあるので、それを使えばいい話しでは? SQLiteではMySQLの構文に比べて制限があるようで、 列名 INTEGER PRIMARY KEY AUTOINCREMENT というように、マニュアル記載通りに、データ型やキーワードを指定しないと、うまく動作しなかったように記憶しています。 http://www.sqlite.org/lang_createtable.html
質問者
補足
回答ありがとうございました。 noという列を追加し、AUTOINCREMENTで定義しました。 INSERTできたのですが、行を追加しても自動的にナンバリングなく、空白で追加されました。 どうしてかご存知でしたらまたご教授お願いします。
お礼
回答ありがとうございました。 おかげさまでできました。 PRIMARY KEYと設定したら今度は自動的に連番が振られました。 さっきは振られなかったのに? >INSERT INTO 表名 >VALUES(NULL,値1,値2,・・・) -- no列にはnullを格納するように指定 >あるいは、 >INSERT INTO 表名(列1,列2,・・・) -- no列は指定しない >VALUES(値1,値2,・・・ という書き方も重視していきます。 ありがとうございました。