Here are 2 tables to use in our example:
CREATE TABLE t1 (
t1_pk INTEGER PRIMARY KEY,
t1_value VARCHAR(20)
);
CREATE TABLE t2 (
t1_fk INTEGER,
t2_id INTEGER,
t2_value VARCHAR(20)
);
t1_pk would be the primary key on your main table (t1), t1_fk would be
foreign key to t1_pk and t1_fk+t2_id (not mathematical addition) would
form a unique identifier for any t2 record.
Since t1_pk is declared as an INTEGER PRIMARY KEY it will always hold
the same value as ROW_ID. So once you have called sqlite_exec() with
your insert statement for t1, call last_insert_rowid() and use that
value as the value for t1_fk when you will do yhe insert in t2.
Hope this can help you a bit, if still not sure about how to proceed,
just mail me back.
Simon B.
On Tue, 2004-04-06 at 00:01, Rob Duncan wrote:
> Greetings,
>
> I have what is, I think, a very basic SQL question, but I don't seem to
> be able to find the answer. I'm almost a complete database novice, so
> perhaps I have things completely wrong… I want to insert a row into
> one table and have it automatically generate a primary key (the other
> fields in the insert are not going to be unique, only the primary key
> is sure to be unique). I then want to add some rows to other tables
> that refer to the first row with a foreign key. So my question is, how
> do I obtain the value of the first row's primary key, and how do I use
> it as a foreign key in the subsequent inserts?
>
> The last_insert_rowid() function seems to be close to what I want. The
> trouble with it is that as soon as I add a row to the first child table
> its value will change and I will not be able to use it for any other
> child inserts.
>
> Thanks,
>
> Rob.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>