简体   繁体   中英

Adding column with primary key in existing table

I am trying to add primary key to newly added column in existing table name Product_Details .

New Column added: Product_Detail_ID ( int and not null )

I am trying add primary key to Product_Detail_ID (please note: there are no other primary or foreign key assigned to this table)

I am trying with this query but getting error.

ALTER TABLE Product_Details
ADD CONSTRAINT pk_Product_Detils_Product_Detail_ID PRIMARY KEY(Product_Detail_ID)
GO

Error:

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.Product\\_Details' and the index name 'pk\\_Product\\_Detils' . The duplicate key value is (0).

Am I missing something here? I am using SQL Server 2008 R2. I would appreciate any help.

If you want SQL Server to automatically provide values for the new column, make it an identity.

ALTER TABLE Product_Details DROP COLUMN Product_Detail_ID
GO
ALTER TABLE Product_Details ADD Product_Detail_ID int identity(1,1) not null
GO
ALTER TABLE Product_Details
add CONSTRAINT pk_Product_Detils_Product_Detail_ID primary key(Product_Detail_ID)
GO

在 mysql 中,我能够通过以下查询实现

ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key

You are getting the error because you have existing data that does not fullfill the constraint.

There are 2 ways to fix it:

  • clean up the existing data before adding the constraint
  • add the constraint with the "WITH NOCHECK" option, this will stop sql server checking existing data, only new data will be checked
ALTER TABLE Jaya 
  ADD CONSTRAINT no primary key(No);

here Jaya is table name,

no is column name,

ADD CONSTRAINT is we giving the primary key keyword

If you want to add a new column say deptId to the existing table say department then you can do it using the below code.

ALTER TABLE department ADD COLUMN deptID INT;

it will create your new column named deptID.

now if you want to add constraint also along with new column while creating it then you can do it using the below code. In the below code I am adding primary key as a constraint. you can add another constraint also instead of primary key like foreign key, default etc.

ALTER TABLE department ADD COLUMN deptID INT NOT NULL ADD CONSTRAINT PRIMARY KEY(deptID);

Add Primary Key to First Position

ALTER TABLE table_name 
ADD column_name INT PRIMARY KEY AUTO_INCREMENT FIRST;

Reference: Stack Overflow | Tech On The Net

Namaste 🙏

k. friend command: sql> alter table tablename add primary key(col_name);

ex: alter table pk_Product_Detils add primary key(Product_Detail_ID);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM