Триггер является односторонним, но вы можете использовать отфильтрованный индекс (CREATE UNIQUE INDEX, а не как ограничение таблицы), чтобы игнорировать нулевое значение. Таким образом, вам не нужно беспокоиться о том, какое значение поставить туда
В качестве альтернативы, если вы хотите заполнить его из другого столбца, у вас может быть вычисляемый столбец с уникальным ограничением.
ALTER TABLE whatever
ADD ComputedUniqueCol = CASE WHEN Id = 0 THEN OtherCol ELSE Id END