On 2017-03-09 09:59:25, "Dan Kennedy" <danielk1...@gmail.com> wrote:
On 03/09/2017 09:39 PM, J. King wrote:
Out of curiosity, can you provide some insight as to why it does not
produce a mismatch for a WITHOUT ROWID table?
The main b-tree in which data for a "rowid table" - any table that is
not a WITHOUT ROWID table or a virtual table - is stored uses 64-bit
integers for keys. If you declare a column "INTEGER PRIMARY KEY", it
becomes an alias for this underlying integer key. So in this case the
field must be set to an integer value - SQLite could not store it
otherwise.
With a WITHOUT ROWID table, the main b-tree used to store data is more
flexible - it can have any type of key. So in this case there is no
restriction.
https://www.sqlite.org/fileformat.html#representation_of_sql_tables
and:
https://www.sqlite.org/rowidtable.html
https://www.sqlite.org/withoutrowid.html
Again, thank you. I was completely misreading the documentation with
regard to WITHOUT ROWID. Now a) it makes much more sense and b) I
understand when it might actually come in handy.
--
J. King
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users