2016-01-07 2 views
1

У меня есть база данных истории в SQL Server 2005, которая используется для архивирования данных из живой базы данных. Мне нужно добавить столбец в базу данных истории с именем RowID INT. Этот столбец нельзя создать как идентификатор, так как он должен хранить значения из живой базы данных.Как сохранить ненулевые повторяющиеся значения в SQL Server 2005

Примечание: в живой базе данных RowID является столбцом идентификации. Эта колонка также была добавлена ​​мной в живой базе данных также недавно.

Мне нужно убедиться, что в базе данных истории ненулевые значения, вставленные в этот столбец, уникальны. Я понимаю, что в SQL Server мы не можем сделать столбец с нулевым значением как уникальный.

Итак, в SQL Server 2005 наиболее эффективный способ убедиться, что вставка non-null duplicate values в столбцы RowID вызывает ошибку?

+1

вы сказали RowID в Живой идентичности. Как вы получили туда дубликаты? – techspider

+0

@techspider В базе данных Live он никогда не становится дублирующимся. Но в базе данных истории может быть сделано несколько попыток архивирования. Если RowID уже присутствует, он должен потерпеть неудачу в базе данных истории. – Lijo

+0

Как сделать архив? это скрипт или инструмент? – techspider

ответ

2

Это слишком длинный комментарий. Настало время перейти на более новую версию SQL Server. Microsoft прекращает поддержку в апреле (2016 год) (см. here).

Начиная с SQL Server 2008, вы можете тривиальным делать то, что вы хотите с фильтрованной уникальный индекс:

create unique index unq_history_rowid on history(rowid) where col is not null; 
Смежные вопросы