Проблема ограничения на уникальность данных SQL Server

Как создать ограничение на уникальность данных на varchar (макс.) поле в Visual Studio, визуально.

проблема состоит в том, когда я пробую ее:

управляйте индексами, и ключи> добавляют> столбцы

Я могу, только выбрал bigint столбцы, но не любой из varchar (макс.).

Я должен, возможно, использовать проверочные ограничения?

Если да, что вставить выражение?

Спасибо за информацию

16
задан marc_s 7 May 2010 в 21:25
поделиться

3 ответа

Вы не можете наложить уникальное ограничение на столбец VARCHAR (MAX) (который может содержать до 2 ГБ текста !!). Вы просто не можете.

Ограничение уникальности обеспечивается уникальным индексом в фоновом режиме, а SQL Server имеет ограничение в 900 байт на записи индекса. По этой причине вы также не можете наложить уникальное ограничение на поле VARCHAR (2000) .

Вам нужно будет найти другой способ добиться того, что вы пытаетесь сделать. Вы могли бы, например, вычислить длину и что-то вроде контрольной суммы для вашего текста и наложить уникальное ограничение на эти столбцы длины и контрольной суммы.

19
ответ дан 30 November 2019 в 22:09
поделиться

Даже если бы это было возможно, это было бы плохой идеей.

1) Есть другой способ. Найдите другие данные для использования в качестве уникального столбца

2) Если вам АБСОЛЮТНО НУЖНО использовать varchar(Max). Может быть, хэшировать его при вставке/обновлении и добавить хэш-столбец?

1
ответ дан 30 November 2019 в 22:09
поделиться

Один из способов сделать это - добавить столбец для хэша, который вычисляется всякий раз, когда вы вставляете или обновляете столбец и помещаете в него уникальный индекс. Хотя коллизии хешей случаются, это крайне маловероятно.

Вы можете использовать это ключевое слово T-SQL:

http://msdn.microsoft.com/en-us/library/ms174415.aspx

1
ответ дан 30 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: