CREATE TABLE colors (
id serial primary key not null unique,
name varchar(255) not null
);
CREATE TABLE items (
id serial primary key not null unique,
name varchar(255) not null
);
CREATE TABLE items_colors
(
id serial primary key not null,
item_id int references items (id) on delete cascade not null,
color_id int references colors (id) on delete cascade not null
);
CREATE UNIQUE INDEX uniq_item_id_color_id__btree ON items_colors (item_id, color_id);
INSERT INTO colors (name) VALUES('red');
INSERT INTO colors (name) VALUES('green');
INSERT INTO colors (name) VALUES('blue');
INSERT INTO items (name) VALUES('boat');
INSERT INTO items (name) VALUES('airplane');
INSERT INTO items_colors (item_id, color_id)
SELECT id, 1 from items
ON CONFLICT (item_id, color_id) DO NOTHING;
INSERT INTO items_colors (item_id, color_id)
SELECT id, 1 from items
ON CONFLICT (item_id, color_id) DO NOTHING;
DROP INDEX IF EXISTS uniq_item_id_color_id__btree;
select * from items;
select * from colors;
select * from items_colors;