Добавление уникальных значений в БД при соблюдении условия

Статус
В этой теме нельзя размещать новые ответы.

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #1
Привет.
Наполняю БД именами (саша, коля, петя...)
у таблицы есть колонки ...name, country...

типа
Саша ру
Коля ру
Петя юа
Иван бел

Импорт идет в цикле из файлов (ру, юа...) После будет дополняться новыми данными
Задача в том, чтобы в рамках страны имена были уникальны, но могли повторяться для других стран.

то есть
Саша ру
Саша ру
= плохо))

Саша ру
Саша юа
=хорошо))

Беда в том, что база будет наполняться и дальше (разово почистить от дублей файлы не вариант). Создать под каждую страну отдельную таблицу тоже не подходит.

Как лучше поступить?
 

Sorcus

Sorcus. A New Beginning.
Регистрация
10 Июл 2011
Сообщения
513
Реакции
1.002

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #4
Если будет UNIQUE name
то после добавления
Саша, ру
я не смогу добавить
Саша, юа
 

Sorcus

Sorcus. A New Beginning.
Регистрация
10 Июл 2011
Сообщения
513
Реакции
1.002
Если будет UNIQUE name
то после добавления
Саша, ру
я не смогу добавить
Саша, юа
Специально для тебя :glob:
Код:
example_db=> CREATE UNIQUE INDEX users_idx ON users(email, password);
CREATE INDEX

example_db=> INSERT INTO users(email, password) VALUES ('user@example.com', 'SeCuRe');
INSERT 0 1

example_db=> INSERT INTO users(email, password) VALUES ('user@example.com', 'SeCuRe');
ERROR:  duplicate key value violates unique constraint "users_idx"
DETAIL:  Key (email, password)=(user@example.com, SeCuRe) already exists.

example_db=> INSERT INTO users(email, password) VALUES ('user@example.com', 'NoTSeCuRe');
INSERT 0 1
Сделано для PostgreSQL, но для MySQL/MariaDB должно быть аналогично.
 

javx

Мой дом здесь!
Регистрация
28 Авг 2015
Сообщения
510
Реакции
266
Если будет UNIQUE name
то после добавления
Саша, ру
я не смогу добавить
Саша, юа
Суть в комбинации нескольких столбцов. Уникальность будет проверяться у связки.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху