Индексы sql вставляют только одну запись из дублирования при массовой вставке

У меня есть индекс с 4 столбцами, мне нужно вставить большую часть строк из выбранного запроса с дублированными строками, мне нужно сделать этот ключевой индекс, чтобы предотвратить вставку второй повторяющейся строки, просто вставьте одну из них как мне это сделать ?

Иметь уникальное ограничение, уникальный индекс или первичный ключ.

jarlh 01.05.2018 16:04

@jarlh я сделал идентификатор первичным ключом, но все еще не работает

Malo 01.05.2018 16:13

Какие СУБД вы используете?

jarlh 01.05.2018 16:41
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
19
1

Ответы 1

Вам нужен не только индекс, но и ограничение базы данных.

Например, если в вашей таблице четыре столбца, как в:

create table my_table (
  col1 int not null,
  col2 int not null,
  col3 int not null,
  col4 int not null,
  constraint unique_row unique (col1, col2, col3, col4)
);

Включенное ограничение предотвращает любую повторяющуюся строку, поскольку оно включает все столбцы таблицы.

В качестве побочного эффекта база данных создаст уникальный индекс для осуществлять этого ограничения. Но ключевым аспектом является ограничение.

Примечание: пример в PostgreSQL (вы не указали никакую базу данных), но должен работать с большинством баз данных.

такой же ответ Violation of UNIQUE KEY constraint 'UC_ATT'. Cannot insert duplicate key in object 'dbo.EmployeeAtt'.

Malo 01.05.2018 20:44

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

Malo 01.05.2018 20:46

Затем вы можете реализовать триггер предварительная вставка. С его помощью вы можете проверить, существует ли значение, и проигнорировать его.

The Impaler 02.05.2018 02:07

Другие вопросы по теме