У меня есть следующая таблица: Customer (Id, Name, employeeID)
Таблица уже создана и пуста, я не хочу удалять дублирующиеся данные, все, что мне нужно, это изменить таблицу, чтобы избежать дублирования данных
Я хочу использовать ALTER и убедиться, что в employeeID нет дубликатов.
Будет
ALTER TABLE Customers
UNIQUE(employeeID)
ADD CONSTRAINT
Есть ли способ лучше?
2 ответа
Добавление уникального ограничения гарантирует, что повторяющиеся записи не будут добавлены в будущем:
ALTER TABLE Customers
ADD CONSTRAINT choose_a_name_for_the_constraint UNIQUE (EmployeeID);
Вы правильно поняли, просто проблема с порядком ключевых слов.
Если вы работаете с SQLS, учтите также, что подобные тривиальные операции можно выполнять через графический интерфейс в SSMS, и он будет направлять процесс. Вы также можете заставить его превратить изменения в сценарии для вас, щелкнув правой кнопкой мыши по таблице и выбрав «Таблица сценариев как ...», чтобы вы могли использовать их в других местах.
Насколько я понимаю, я создаю уникальный индекс следующим образом:
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
.
Похожие вопросы
Связанные вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.