Estou tentando usar ON CONFLICT
em duas colunas onde uma pode ser null
. Infelizmente, com o índice parcial, não consigo fazê-lo.
create table tbl( col1 int, col2 int, col3 boolean);
CREATE UNIQUE INDEX ON tbl (col1, col2)
WHERE col2 IS NOT NULL; -- NOT NULL
CREATE UNIQUE INDEX ON tbl (col1, col2)
WHERE col2 IS NULL; -- NULL
INSERT INTO tbl(col1, col2)
values(1, 3)
ON CONFLICT(col1, col2) DO UPDATE SET col3 = true;
ERRO: não há restrição exclusiva ou de exclusão que corresponda à especificação ON CONFLICT