On 28 Feb 2017, at 12:19am, James K. Lowden <jklow...@schemamania.org> wrote:

> sqlite> create table A(a, b, primary key (a,b));
> sqlite> create table C(c references A(a));

The reference column(s) (the column(s) in the 'parent' table) must be UNIQUE 
otherwise you may have two rows in that table which both look like they may be 
the parent.

So you need a UNIQUE index on the reference column(s).  Of course, if they’re 
the primary key then they already have a UNIQUE index, since the primary key of 
a table must be unique and SQLite automatically makes an index to enforce that. 
 So try instead

create table A(a, b, primary key (a,b));
CREATE UNIQUE INDEX A_a ON A (a);
create table C(c references A(a));

A way to have this index automatically created is to put a UNIQUE requirement 
on that column:

create table A(a, b, primary key (a UNIQUE,b));
create table C(c references A(a));

This is documented in section 3 of

<https://www.sqlite.org/foreignkeys.html>

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

Reply via email to