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

Reply via email to