SQL уникальность нескольких столбцов

Мне нужно заносить данные, полученный парсером из нескольких потоков.

Так как нету какой либо идентификации записи. То я решил создать UNIQUE из всех полей

CREATE TABLE `brand` ( 
    `id` Int( 255 ) AUTO_INCREMENT NOT NULL,
    `app_data` Date NOT NULL,
    `brand` Text NOT NULL,
    `holder` Text NULL,
    `holder_country` Text NULL,
    `nice_cl` Text NULL,
    `number` Text NULL,
    `origin` Text NULL,
    `relevance` Int NULL,
    `source` Text NULL,
    `status` Text NULL,
    `image_class` Text NULL ,
    UNIQUE(`app_data`, `brand`, `holder`, `holder_country`, `nice_cl`, `number`, `origin`, `relevance`, `source`, `status`, `image_class`))
ENGINE = InnoDB;

Выкинуло ошибку, из - за Text.

Сменил на Varchar(255). Теперь стало выдавать ошибку, о том, что ключ больше 3072 bytes.

Можно конечно заносить текст в каждую таблицу ( + 10 таблиц)(нормализовать) а уже в главной таблицу получать Id на их, но нужно именно в таком виде, чтобы было все в 1 таблице.

Есть варианты по увеличению этого key? База MySQL.

Может в PostgreSQL можно так сделать?

Иначе придется в парсере отдельным потоком сначала выполнять select запрос на проверку наличия в базу данных. А затем и Insert делать


Ответы (0 шт):