On Mon, Nov 18, 2013 at 5:45 PM, Nico Williams <n...@cryptonector.com>wrote:

> Obviously a B-Tree-based table will need *some* key, but it won't need
> that key to be UNIQUE.
>

Yeah it does.  Every storage system has a unique key, be it an address in
memory or a filename and offset on disk.  There must be some way to
distinguish between two record.  Two records with the same key are
indistinguishable from one another and are hence the same record.

The question is whether or not the unique identifier is exposed to the
application.

SQLite allows the unique identifier to be a PRIMARY KEY ... WITHOUT ROWID.
Or it allows it to be the rowid.  You get to choose.  But every table has
to have one or the other.

You can argue that it is theoretically possible to create a table where the
key is something other than PRIMARY KEY or rowid (perhaps it is the
filename+offset suggested above) that is simply not exposed to the
application layer.  Yes, that is theoretically possible.  But SQLite does
not do that and I do not see any reason to add the capability.

-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to