ALTER TABLE 时出错 - 消息 102,级别 15,状态 1

Error when ALTER TABLE - Msg 102, Level 15, State 1

我正在使用 SQL 服务器并尝试更改现有 table:

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,
)

并得到这个错误:

Msg 102, Level 15, State 1, Line 10
Incorrect syntax near '('.

我每次都在更改语法,但仍然出现此错误

Msg 102, Level 15, State 1

有什么问题?

您只需要添加一个 UNIQUE 约束作为

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

您的 ALTER TABLE 语法完全错误 - 如果您只想将 UNIQUE 添加到有问题的两列 - 使用此:

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

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

在 Docs@Microsoft

上阅读有关 the ALTER TABLE command 的所有内容

无法在列级别添加唯一键约束。唯一键约束定义在 table 级别。

您可以通过以下方式更改table以添加唯一键。

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

例如

ALTER TABLE Users
ADD CONSTRAINT Users_Unique UNIQUE (UserName, UserEmail);

AlterCreate 语句不同..

定义 :

ALTER TABLE statement is used to add, delete, or modify columns in an existing table also used to add and drop various constraints on an existing table

您可以在此处查看演示是否有效:DEMO