У меня есть следующая таблица: Customer (Id, Name, employeeID)

Таблица уже создана и пуста, я не хочу удалять дублирующиеся данные, все, что мне нужно, это изменить таблицу, чтобы избежать дублирования данных

Я хочу использовать ALTER и убедиться, что в employeeID нет дубликатов.

Будет

ALTER TABLE Customers
UNIQUE(employeeID)
ADD CONSTRAINT

Есть ли способ лучше?

-4
Iakovos Belonias 1 Май 2019 в 10:58

2 ответа

Лучший ответ

Добавление уникального ограничения гарантирует, что повторяющиеся записи не будут добавлены в будущем:

ALTER TABLE Customers
ADD CONSTRAINT choose_a_name_for_the_constraint UNIQUE (EmployeeID);   

Вы правильно поняли, просто проблема с порядком ключевых слов.

Если вы работаете с SQLS, учтите также, что подобные тривиальные операции можно выполнять через графический интерфейс в SSMS, и он будет направлять процесс. Вы также можете заставить его превратить изменения в сценарии для вас, щелкнув правой кнопкой мыши по таблице и выбрав «Таблица сценариев как ...», чтобы вы могли использовать их в других местах.

2
Caius Jard 1 Май 2019 в 08:11

Насколько я понимаю, я создаю уникальный индекс следующим образом:

create table unicondtional (
 i int identity (1,1) 
 , j int 
)

insert into unicondtional values (1), (1) 

select * from unicondtional 

-- assume 'unicondtional' is table like what you have, so far. 

CREATE UNIQUE NONCLUSTERED INDEX unique_with_condition ON unicondtional 
(
    j
)
WHERE (i > 2) -- max (i) 

-- create unique index with condition. 
-- from the 'where' clause, we say that, Index should be ensure the unique value insertion. 

insert into unicondtional values (1), (2), (3) -- See the Note.
-- successful insert. 

select * from unicondtional 

insert into unicondtional values (2)
-- due to the Unique Index, duplicate is not allowed by the Index.

update unicondtional 
set j = 3 
where j = 1 
-- before the Index(On the first two rows), duplicates are exist.  

select * from unicondtional 

Таким образом, вам не нужно удалять существующие дубликаты записей.

Примечание. . После индекса, если вы считаете 1 дубликатом, вы используете Trigger вместо Unique Index.

2
Pugal 1 Май 2019 в 13:12