add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE outerwear ( outerwear_id integer primary key);
CREATE TABLE outerwear_outerwear_join (
a_outerwear_id integer REFERENCES outerwear,
b_outerwear_id integer REFERENCES outerwear,
PRIMARY KEY(a_outerwear_id, b_outerwear_id)
);
create unique index unq_test_a_b on outerwear_outerwear_join ( least(a_outerwear_id, b_outerwear_id), greatest(a_outerwear_id, b_outerwear_id));

insert into outerwear(outerwear_id) values(1);
1 rows affected
insert into outerwear(outerwear_id) values(2);
1 rows affected
INSERT INTO outerwear_outerwear_join(a_outerwear_id, b_outerwear_id) VALUES ( 1,2);
1 rows affected
INSERT INTO outerwear_outerwear_join(a_outerwear_id, b_outerwear_id) VALUES ( 2,1);
ERROR:  duplicate key value violates unique constraint "unq_test_a_b"
DETAIL:  Key ((LEAST(a_outerwear_id, b_outerwear_id)), (GREATEST(a_outerwear_id, b_outerwear_id)))=(1, 2) already exists.

select * from outerwear_outerwear_join;
a_outerwear_id b_outerwear_id
1 2