I have already documented this and read about it by other users, but in my case the link should work fine: I have several tables extending one table "entity" and the table "association" that refers only to "entity", Table. Therefore, I refer only to the parent table, which owns every other table identifier. Why did I get the following then?
ERROR: insert or update on table "association" violates foreign key constraint "association_id1_fkey" DETAIL: Key (id1)=(1) is not present in table "entity".
Here is the circuit I'm using.
CREATE TABLE entity ( id serial primary key, created_at int, updated_at int, deleted_at int ); CREATE TABLE association ( id1 int references entity(id) on delete cascade on update cascade, atype varchar, id2 int references entity(id) on delete cascade on update cascade, created_at int, deleted_at int ); CREATE TABLE "user" ( first_name varchar(255), last_name varchar(255) )INHERITS(entity); CREATE TABLE "pet" ( name varchar(255) )INHERITS(entity); INSERT INTO "user" (first_name) VALUES ('damiano'); INSERT INTO "user" (first_name) VALUES ('francesco'); INSERT INTO "user" (first_name) VALUES ('romolo'); INSERT INTO "pet" (name) VALUES ('baloo'); INSERT INTO "pet" (name) VALUES ('micia'); INSERT INTO "pet" (name) VALUES ('ioria'); INSERT INTO "association" VALUES (1, 'pets', 4, 0, 0); INSERT INTO "association" VALUES (1, 'pets', 5, 0, 0); INSERT INTO "association" VALUES (2, 'pets', 4, 0, 0); INSERT INTO "association" VALUES (2, 'pets', 5, 0, 0); INSERT INTO "association" VALUES (3, 'pets', 6, 0, 0);
The rows are inserted correctly:
testing=# select * from "entity"; id | created_at | updated_at | deleted_at ----+------------+------------+------------ 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | | (6 rows) testing=# select * from "user"; id | created_at | updated_at | deleted_at | first_name | last_name ----+------------+------------+------------+------------+----------- 1 | | | | damiano | 2 | | | | francesco | 3 | | | | romolo | (3 rows) testing=# select * from "pet"; id | created_at | updated_at | deleted_at | name ----+------------+------------+------------+------- 4 | | | | baloo 5 | | | | micia 6 | | | | ioria (3 rows) testing=#