Добавление столбца с первичным ключом в существующую таблицу
Я пытаюсь добавить первичный ключ к вновь добавленному столбцу в существующее имя таблицы Product_Details
.
Добавлен новый столбец: Product_Detail_ID
(int
и not null
)
Я пытаюсь добавить первичный ключ к Product_Detail_ID
(обратите внимание: в этой таблице нет другого первичного или внешнего ключа)
Я пытаюсь с этим запросом, но получаю ошибку.
ALTER TABLE Product_Details
ADD CONSTRAINT pk_Product_Detils_Product_Detail_ID PRIMARY KEY(Product_Detail_ID)
GO
Ошибка:
Оператор CREATE UNIQUE INDEX
завершен, потому что был найден дубликат ключа для имени объекта 'dbo.Product\_Details'
и имени индекса 'pk\_Product\_Detils'
. Значение дублирующегося ключа равно (0).
Я что-то упустил? Я использую SQL Server 2008 R2. Я был бы признателен за любую помощь.
Ответы
Ответ 1
Если вы хотите, чтобы SQL Server автоматически предоставлял значения для нового столбца, сделайте его личным.
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
Ответ 2
Вы получаете ошибку, потому что у вас есть существующие данные, которые не заполняют ограничение.
Есть два способа исправить это:
- очистить существующие данные перед добавлением ограничения
- добавьте ограничение с параметром "WITH NOCHECK", это остановит сервер sql, проверяющий существующие данные, будут проверяться только новые данные.
Ответ 3
ALTER TABLE Jaya
ADD CONSTRAINT no primary key(No);
здесь Jaya
- имя таблицы,
no
- имя столбца,
ADD CONSTRAINT
мы даем ключевое ключевое слово
Ответ 4
В mysql я смог достичь следующего запроса
ALTER TABLE table_name ADD new_column int NOT NULL AUTO_INCREMENT primary key
Ответ 5
к. друг
команда:
sql > alter table tablename добавить первичный ключ (col_name);
ex: alter table pk_Product_Detils добавить первичный ключ (Product_Detail_ID);