drop table if exists x;
drop table if exists y;
CREATE TABLE x
(
x TEXT ,
CONSTRAINT uq_x UNIQUE (x)
);
-- unique 로 선언되었지만 null 값은 예외입니다. 중복으로 insert 가 가능합니다.
insert into x values(null);
insert into x values(null);;
select * From x;
x
--------
<NULL>
<NULL>
------------------------------------------------------------------------------------
pg15 에서는 새로운 구문이 생겨서 null 값 중복을 막을수 있습니다.
CREATE TABLE y
(
y TEXT ,
CONSTRAINT uq_y UNIQUE NULLS NOT DISTINCT (y)
);
insert into y values(null); -- success
insert into y values(null); -- failure
ERROR: duplicate key value violates unique constraint "uq_y"
DETAIL: Key (y)=(null) already exists.