向现有表Sql Server添加主键时出现错误

时间:2018-06-21 10:34:33

标签: sql-server sql-server-2014

我有一张桌子:Sales_Table带有列:

ProductKey Int not null,
UnitPrice decimal 18,2,
SalesAmount decimal 18,2

我正在尝试使用alter table将主键添加到ProductKey列

ALTER TABLE SALES_TABLE
ADD PRIMARY KEY (ProductKey)

运行代码后,出现以下错误:

  

消息1505,级别16,状态1,第9行CREATE UNIQUE INDEX语句   由于找到对象名称的重复键而终止   'dbo.Sales_Table'和索引名称'PK__Sales_Ta__A15E99B36F3FE24F'。   重复的键值为(604)。

我该怎么做才能克服这个问题?预先感谢。

1 个答案:

答案 0 :(得分:0)

尝试一下

IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Product')
BEGIN
CREATE TABLE [dbo].[Product](
    [ProductKey] [int] NOT NULL,
    [UnitPrice] [decimal](18, 2) NULL,
    [SalesAmount] [decimal](18, 2) NULL,
) ON [PRIMARY]
END

IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE name='Pk_Product')
BEGIN
ALTER TABLE [dbo].[Product] ADD  CONSTRAINT [Pk_Product] PRIMARY KEY CLUSTERED 
(
    [ProductKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
END