【问题标题】:Error when ALTER TABLE - Msg 102, Level 15, State 1ALTER TABLE 时出错 - 消息 102,级别 15,状态 1
【发布时间】:2019-04-26 15:55:44
【问题描述】:

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

有什么问题?

【问题讨论】:

  • 简单,语法错误,检查ALTER TABLE,你只需要添加2个约束。
  • @Sami 我尝试使用alter column,但同样的错误。这是您发送到那里的一个巨大页面
  • 它不是新的旧表

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


【解决方案1】:

你只需要添加一个UNIQUE约束为

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

【讨论】:

  • 为什么要添加?很有可能用户名和用户电子邮件都需要独立唯一,而不是只要组合是唯一的,就可以接受其中任何一个的重复。
【解决方案2】:

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

【讨论】:

  • 我改变了它,但我得到了同样的错误 - Msg 156, Level 15, State 1, Line 15 Incorrect syntax near the keyword 'UNIQUE'.
【解决方案3】:

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

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

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

例如

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

【讨论】:

    【解决方案4】:

    AlterCreate 语句不同..

    定义

    ALTER TABLE 语句用于添加、删除或修改表中的列 现有表还用于添加和删除各种约束 现有表

    你可以在这里查看演示,它是有效的:DEMO

    【讨论】:

    • 很高兴帮助您@sup.DR ..您可以选择适合您问题的答案.. :)
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2019-12-02
    相关资源
    最近更新 更多