On Sep 6, 2008, at 2:50 AM, Scott Hess wrote:

> On Fri, Sep 5, 2008 at 11:31 PM, jonwood <[EMAIL PROTECTED]>  
> wrote:
>> I have a table where the primary key consists of two columns. I'm  
>> doing this
>> because these two columns combined must be unique, while each  
>> column is not
>> unique on its own.
>>
>> Because of the increased complexity of a dual-column primary key  
>> for some
>> operations, I'd like to use ROWID. But the documentation states the  
>> ROWID
>> can change at any time so I'm not sure what I can do safely.
>
> Do this:
>
> CREATE TABLE t (
>  id INTEGER PRIMARY KEY,
>  a TEXT NOT NULL,
>  b INTEGER NOT NULL,
>  UNIQUE (a, b)
> );
>
> (a,b) will be just as unique as in the first case, but now you can use
> id as a stable alias for rowid.  There will be the same number of
> btrees (one keyed by rowid/id for the table, one for the index on
> a,b), and things should take the same amount of space (since id is an
> alias for rowid, not a new column).
>
> As a bonus, if the implementation of SQLite changes, SQL itself won't,
> so id will _still_ be a valid integer primary key, even if the
> implementation detail of rowid changes.

I promise that INTEGER PRIMARY KEY will always be an alias for the  
rowid in SQLite.  This will not change.

>

D. Richard Hipp
[EMAIL PROTECTED]



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

Reply via email to