Как забить поле в таблице уникальными данными (без primary key)

Иногда приходится сталкиваться с задачей, когда при  вставке строк в таблицу требуется какое-либо поле сделать уникальным при чем без использования primary key. Например при импорте на сайт определенных материалов с другой таблицы требуется сделать уникальный link. Для этого мы можем использовать функцию ROW_NUMBER():

[codesyntax lang=»sql» title=»TSQL»]

INSERT INTO News (link, title)
Select row_number() over(order by name)  , name
FROM Old_News

[/codesyntax]

Это код используется для пустой таблицы News. Если же в данной таблице уже есть какие-то данные, то нужно немного поменять код:

[codesyntax lang=»sql» title=»TSQL»]

declare @i int;
select @i = max(link) + 1 from News;
INSERT INTO News(link, name)
Select row_number() over(order by name) + @i , name
FROM Old_News

[/codesyntax]

Запись опубликована в рубрике SQL с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *