ALTER TABLE时发生错误-消息102,级别15,状态1

时间:2018-11-24 09:22:39

标签: sql sql-server sql-server-2008 alter-table

我正在使用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,
)

并得到此错误:

  

第15级州立1行10的消息102
  '('附近的语法不正确。

我每次都在更改语法,但仍然会收到此错误

  

第15层状态1的消息102

出什么问题了?

4 个答案:

答案 0 :(得分:4)

您只需要添加UNIQUE约束作为

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

答案 1 :(得分:1)

您对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的所有信息

答案 2 :(得分:1)

AlterCreate语句不同。

定义

  

ALTER TABLE语句用于添加,删除或修改   现有表还用于添加和删除各种约束   现有表格

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

答案 3 :(得分:0)

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

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

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

例如

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