簡體   English   中英

ALTER TABLE時發生錯誤-消息102,級別15,狀態1

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

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

並得到這個錯誤:

Msg 102,第15級,狀態1,第10行
'('附近的語法不正確。

我每次都在更改語法,但仍然會收到此錯誤

消息102,第15級,狀態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 ALTER TABLE命令的全部信息

AlterCreate語句不同。

定義

ALTER TABLE語句用於添加,刪除或修改現有表中的列,還用於在現有表上添加或刪除各種約束

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

無法在列級別添加唯一鍵約束。 唯一鍵約束在表級別定義。

您可以通過以下方式更改表以添加唯一鍵。

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

例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM