Ошибка, когда ALTER TABLE - Msg 102, Уровень 15, Состояние 1 - PullRequest
0 голосов
/ 24 ноября 2018

Я использую SQL Server и пытаюсь изменить существующую таблицу:

ALTER TABLE [Users] 
(
    [User_ID] INT IDENTITY(1,1) PRIMARY KEY,
    [UserName] [NVARCHAR](30) NOT NULL UNIQUE, -- the only change is "UNIQUE"
    [UserEmail] [NVARCHAR](30) NOT NULL UNIQUE,  -- the only change is "UNIQUE"
    [Password] [NVARCHAR](30) NOT NULL,
)

И получаю эту ошибку:

Сообщение 102, Уровень 15, Состояние 1, Строка10
Неверный синтаксис рядом с '('.

Я меняю синтаксис каждый раз, но все равно получаю эту ошибку

Сообщение 102, Уровень 15, Состояние 1

В чем проблема?

Ответы [ 4 ]

0 голосов
/ 24 ноября 2018

Alter отличаются от Create Оператор ..

Определение :

Оператор ALTER TABLE используется для добавления, удаления или изменениястолбцы в существующей таблице также используются для добавления и удаления различных ограничений в существующей таблице

Здесь вы можете проверить демонстрацию, что это работает: DEMO

0 голосов
/ 24 ноября 2018

Ваш синтаксис для ALTER TABLE совершенно неверен - если вы просто хотите добавить UNIQUE к двум рассматриваемым столбцам - используйте это:

ALTER TABLE [Users] 
ADD CONSTRAINT UQ_Users_UserName UNIQUE (UserName);

ALTER TABLE [Users] 
ADD CONSTRAINT UQ_Users_UserEmail UNIQUE (UserEmail);

Узнайте все о the ALTER TABLE команда в Документах @ Microsoft

0 голосов
/ 24 ноября 2018

Невозможно добавить ограничение уникального ключа на уровне столбца.Ограничение уникального ключа определяется на уровне таблицы.

Вы можете изменить таблицу для добавления уникального ключа следующими способами.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

, например,

ALTER TABLE Users
ADD CONSTRAINT Users_Unique UNIQUE (UserName, UserEmail);
0 голосов
/ 24 ноября 2018

Вам просто нужно добавить ограничение UNIQUE как

ALTER TABLE [Users] 
ADD CONSTRAINT U_UserName UNIQUE(UserName),
    CONSTRAINT U_UserEmail UNIQUE(UserEmail);
...