Для этого вы можете использовать первичный ключ и индекс на основе функций. Вот пример:
create table t (
id int primary key,
x int,
y int
);
create unique index t_x_y on t(x, y, (case when x is null or y is null then id end));
Здесь - это дб <> скрипка.