Ruby On Rails SQLite テーブルの作成
postsテーブルを作ったが、postsテーブルを削除して
もう一回作り直した時のメモです!
まずは
$ rails dbconsole
そして
sqlite> create table posts(id integer primary key, content text, image text);
作られたか確認
sqlite> select * from posts; id content image -------- -------------- ----------- sqlite>
テーブルの中身にもうデータを入れてしまったので
その時の状態をコピーできなかったから
確認した時は確かこんな感じだった気が(/ _ ; )
テーブルを作る時のINTEGER PRIMARY KEYは
データを追加した時にカラムの値を指定しないと自動的に値が格納され
自動的に格納される値は、対象のカラムに格納されている
最大の値に1を加えた値となります。
この値は以前に割り当てられたことがあるかどうか関係がないため、
データの追加と削除を繰り返していると以前に格納されたことがある値
が再度カラムに格納される場合があります。
どーゆー事かとゆうと、INTEGER PRIMARY KEYを設定しなかったら
DBの中身を削除してから新しくデータを追加した時に
idが削除したはずの次のidから保存されてしまう。
???
よく分からん説明だ!
もうちょっと噛み砕いてゆうと
10個のデータを削除した
削除した10のデータはid1~10になっている
そして新しくデータを10個追加したら普通はidがまた1~10で登録されるはずが
id11~20で登録されてしまうとゆう事!
これを回避する為にINTEGER PRIMARY KEYを設定してあげると
新しくデータを追加した場合idが1~10に登録されるみたい!
それをしたくてINTEGER PRIMARY KEYで設定したらしっかりと、元から保存されました(☝︎ ՞ਊ ՞)☝︎