This is the minimal SQL for a test case needed to reproduce the oid - 
foreign key bug:

(By changing only 1 character renaming oid to xid in the first line, the 
SQL works as intended).

CREATE TABLE tParent(id INTEGER PRIMARY KEY, c1 TEXT,  oid INTEGER);
CREATE TABLE tChild( id INTEGER PRIMARY KEY,   Data TEXT,
   FOREIGN KEY (id) REFERENCES tParent(id)
     ON UPDATE CASCADE
     ON DELETE CASCADE
);
INSERT INTO tParent (c1) VALUES ('aaa');
INSERT INTO tChild (id, Data)  VALUES (last_insert_rowid(), 'FK A');

UPDATE tParent SET id = 5 WHERE id = 1;  -- This will fail but shouldn't
   -- OR --
DELETE FROM tParent WHERE id = 1;       -- This will fail but shouldn't


Note that
   - "oid" is never referenced again - it's mere presence in the schema 
causes the error.
   - This error does NOT happen when either "rowid" or "_rowid_" is used 
- only when using "oid".



Reply via email to