Как избежать будущих дубликатов на сервере SQL - PullRequest
0 голосов
/ 06 мая 2019

Сегодня я задавал много вопросов по этому поводу, и, возможно, моя проблема в том, что я не прояснил свой вопрос, но я бы хотел улучшить в sql, прямо сейчас
Я нахожусь на тренировке и я заблудился, когда дело доходит до SQL ... Но у меня все отлично, я сделал программу на asp.net C #, где пользователь может импортировать файлы Excel в базу данных ...

Мой босс хочет, чтобы я избегал дубликатов будущих записей, например

Имя Возраст Город Педро 12 Лиссабон Рита 18 Лондон Рита 18 Лондон

Как я мог избежать, чтобы последняя строка была такой же, как вторая? есть запрос, который мгновенно удаляет дубликаты в тот момент, когда она вставлена?

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Вы не «мгновенно удаляете» записи в таких случаях. Вместо этого insert просто терпит неудачу.

Если вы хотите предотвратить дублирование всех столбцов, вы можете использовать уникальное ограничение или уникальный индекс (первый реализован с использованием последнего):

alter table t add constraint unq_t_all_cols unique (name, age, city);

Чаще всего таблицы имеют первичные ключи и уникальные ограничения / индексы для подмножества столбцов. В этом случае это может быть name - хотя это обычно не так хорошо, как некоторая форма действительного идентификатора.

0 голосов
/ 06 мая 2019

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

INSERT INTO tblDestination(Name, Age, City)
(SELECT Name, Age, City FROM tblSource)
EXCEPT SELECT Name, Age, City FROM tblDestination
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...