Я понимаю, что стандарт SQL допускает несколько значений NULL в столбце, который является частью ограничения UNIQUE.
Что Я не понимаю, почему конструкция UNION (по крайней мере, в PostgreSQL) обрабатывает значения NULL как одно и то же. Например:
$ select * from tmp_a;
a | b
---+---
a | b
a |
|
(3 rows)
$ select * from tmp_b;
a | b
---+---
a | c
a |
|
(3 rows)
$ select a, b from tmp_a union select a, b from tmp_b order by 1, 2;
a | b
---+---
a | b
a | c
a |
|
(4 rows)