Почему в таблицу записывает дублирующие значения столбца?
Есть такая таблица
CREATE TABLE IF NOT EXISTS storage (
`email` String,
`apps` Nullable(String) DEFAULT NULL,
`app_youtube` Int16 DEFAULT 0,
`app_maps` Int16 DEFAULT 0,
`lastUpdated` DateTime('Europe/Moscow'),
`firstName` Nullable(String) DEFAULT NULL,
`lastName` Nullable(String) DEFAULT NULL,
`userTypes` Nullable(String) DEFAULT NULL,
`locations` Nullable(String) DEFAULT NULL,
`tab_numbers` Nullable(String) DEFAULT NULL,
`sex` Int16 DEFAULT 0,
`lang` Nullable(String) DEFAULT 'en',
`country_code` Nullable(String) DEFAULT NULL,
`country_name` Nullable(String) DEFAULT NULL,
`city_name` Nullable(String) DEFAULT NULL
) ENGINE = MergeTree()
PRIMARY KEY (email)
ORDER BY (email, lastUpdated, sex, country_code, lang)
SETTINGS allow_nullable_key = 1;
Мне нужно чтобы в эту таблицу не записывались данные если запись с email уже есть в этой таблице.
Запись в БД я делаю так (node js / @clickhouse/client):
await client.insert({
table: 'storage',
values: array_data,
format: 'JSONEachRow',
});
В итоге в таблице появляются повторяющиеся записи с одинаковым значением столбца email
я думал что PRIMARY KEY (email)
не должна пропускать дубли.... почему так происходит и как это решить?
UPD. либо удаление дубликатов по столбцу email делает clickhouse сам в фоне а мне просто нужно при выборке делать группировку по ключу?.....
Источник: Stack Overflow на русском