Чтобы ответить на вопрос в том виде, в каком он был опубликован: Нет, это невозможно сделать ни на одной СУБД, о которой я знаю .
Однако, как и большинство вещей, вы можете обойти это, выполнив следующее.
Создание составного ключа с новым столбцом и существующим столбцом
Вы можете сделать его уникальным, не удаляя ничего, добавив новый столбец, назовите его PartialKey.
Для существующих строк вы устанавливаете для PartialKey уникальное значение (начиная с нуля).
Создайте уникальное ограничение для существующего столбца и PartialKey (вы можете сделать это, поскольку каждая из этих строк теперь будет уникальной).
Для новых строк используйте только значение по умолчанию Zero для PartialKey (поскольку ноль уже использовался), это приведет к тому, что в существующем столбце будут отсутствовать значения в таблице.
ВАЖНОЕ РЕДАКТИРОВАНИЕ
Это слабо - если вы удаляете строку с частичным ключом 0. Теперь можно добавить еще одну строку со значением, которое уже находится в существующем столбце, поскольку 0 в частичном ключе гарантирует уникальность.
Вы должны убедиться, что либо
- Вы никогда не удаляете строку с
частичный ключ 0
- У вас всегда есть пустая строка с
частичный ключ 0, и вы никогда не удаляете
это (или вы автоматически вставляете его автоматически)
Редактировать: укусить пулю и очистить данные
Если, как вы сказали, вы только что поняли, что столбец должен быть уникальным, вам следует (если возможно) очистить данные. Вышеупомянутый подход является хаком, и вы обнаружите, что пишете больше хаков при доступе к таблице (вы можете обнаружить, что у вас есть два набора логики для работы с запросами к этой таблице, один для столбца, где столбец уникален, а другой для это НЕ. Я бы убрал это сейчас, или он вернется и укусит тебя в задницу тысячу раз.