Igor Tandetnik <itandet...@...> writes:
>
> Oliver Peters <oliver....@...> wrote:
> > This sql code works in the two cases but AFAIK it shouldn't in the second
> >
> > PRAGMA foreign_keys = ON;
> >
> > CREATE TABLE staff_02(
> > id INTEGER PRIMARY KEY AUTOINCREMENT,
> > id_staff_editor INTEGER NOT NULL,
> > code CHAR(2) NOT NULL,
> > UNIQUE(code)
> > FOREIGN KEY(id_staff_editor) REFERENCES staff_02(id)
> > );
> >
> > INSERT INTO staff_02(id_staff_editor,code) VALUES(1,'CB');
>
> The first record gets inserted with an id of 1, which just happens to match
the value of id_staff_editor. See
> what this would do:
>
> INSERT INTO staff_02(id_staff_editor,code) VALUES(1000,'CB');
>
So I think I misunderstood the concept of Foreign Keys - I thought at first it
is checked if the PK exists and if it is not existing it is rejected to
INSERT/UPDATE the FK
Could you please explain why it is o.k that this works?
PRAGMA foreign_keys = ON;
CREATE TABLE a(
id INTEGER PRIMARY KEY
AUTOINCREMENT,
id_staff_editor INTEGER NOT NULL,
FOREIGN KEY(id_staff_editor) REFERENCES a(id)
);
INSERT INTO a(id_staff_editor) VALUES(1);
INSERT INTO a(id_staff_editor) VALUES(2);
INSERT INTO a(id_staff_editor) VALUES(3);
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users