basitsar Ответов: 2

Как ограничить повторяющееся значение в столбце nvarchar в SQL express 2008


Привет,

Как ограничить повторяющееся значение в столбце nvarchar в sql Express 2008

Ниже моя таблица

CREATE TABLE [dbo].[User](
	[User_No] [int] IDENTITY(1,1) NOT NULL,
	[User_Name] [nvarchar](max) NOT NULL
) ON [PRIMARY]

GO


Я хочу ограничить, если имя пользователя является дубликатом.

Что я уже пробовал:

Создайте уникальный индекс ix_IndexName для пользователя (User_Name) с помощью IGNORE_DUP_KEY = & lt;on>

но получил ошибку.
Неправильный синтаксис рядом с '<'

[edit]HTML-кодировка [/edit]

Karthik_Mahalingam

вы пробовали принуждение ?

basitsar

нет как это сделать

basitsar

Создание уникального кластеризованного индекса UIX_User
На dbo.[Пользователь]([Имя Пользователя])

потом появилась ошибка.

Столбец '[User_Name] 'в таблице' dbo.User ' имеет тип, недопустимый для использования в качестве ключевого столбца в индексе.

Karthik_Mahalingam

проверьте мое решение

basitsar

есть ошибка

Неправильный синтаксис рядом с ключевым словом "добавить".

2 Ответов

Рейтинг:
12

Karthik_Mahalingam

относиться Ограничение на уникальность данных в SQL [^]

ALTER TABLE [User]
ADD CONSTRAINT uc_User_Name UNIQUE (User_Name)


basitsar

Есть ошибка
Неправильный синтаксис рядом с ключевым словом "добавить".

Karthik_Mahalingam

измените значение типа данных user_name на меньшее число и попробуйте
Создайте таблицу [dbo].[Пользователь](
[User_No] [int] IDENTITY(1,1) NOT NULL,
[User_Name] [nvarchar](50) NOT NULL
)

ALTER TABLE [пользователь]
Добавить ограничение uc_User_Name UNIQUE ([User_Name])

basitsar

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

Karthik_Mahalingam

- нет, сэр.
проблема заключается в типе данных столбца user_name,
вы не можете создать уникальное ограничение с более чем 1000 символами, в вашем коде вы объявили как nvarchar(max).
поэтому сначала обновите таблицу, а затем обновите ограничение.

basitsar

Большое-Большое Спасибо

Karthik_Mahalingam

добро пожаловать

Рейтинг:
1

OriginalGriff

Попробуйте удалить символы < и > :

CREATE UNIQUE INDEX ix_IndexName ON User(User_Name) WITH IGNORE_DUP_KEY = ON
Или лучше:
CREATE UNIQUE INDEX ix_IndexName ON User(User_Name) WITH IGNORE_DUP_KEY = OFF
Если вы хотите запретить дубликаты.

Но лично я бы сделал это как часть моего кода пользовательского интерфейса: когда пользователь пытается зарегистрироваться, я проверяю, занято ли имя пользователя. Если это так, скажите им. Если нет, скажи им, что все в порядке.
Ожидание до последней минуты, когда он будет вставлен, - не самый "приятный" способ для пользователя.


basitsar

не работает показывает ошибку
Неправильный синтаксис рядом с ключевым словом "OFF".