В Postgresql у меня есть таблица с составным первичным ключом. PRIMARY KEY(id_fnd_users, id_app_apps,id_app_categories)
Я пытаюсь создать запрос для массового удаления и хочу, чтобы этот запрос был фиксированного размера (для целей анализа статистики).
Это то, что я придумал с:
DELETE FROM app_users_apps_categories
WHERE
("id_fnd_users", "id_app_apps","id_app_categories")
in (
SELECT id_fnd_users, id_app_apps, id_app_categories
FROM unnest($1::"uuid"[], $2::"uuid"[], $3::"uuid"[]) AS foo(id_fnd_users, id_app_apps,id_app_categories)
)
и вот пример параметров, которые я установил для этого запроса:
$1 = '{61615807-c654-4844-910c-1609dcf3ff4c,61615807-c654-4844-910c-1609dcf3ff4c}',
$2 = '{25fda4e9-ca83-41fb-98ad-77230a74bbbc,34c0cd50-905e-4ea6-9ccf-baeaa591e98a}',
$3 = '{NULL,NULL}'
В основном я заканчиваю запросом, подобным этому:
DELETE FROM app_users_apps_categories
where ("id_fnd_users", "id_app_apps","id_app_categories") in (
SELECT id_fnd_users, id_app_apps, id_app_categories
FROM
unnest(
'{61615807-c654-4844-910c-1609dcf3ff4c,61615807-c654-4844-910c-1609dcf3ff4c}'::"uuid"[],
'{25fda4e9-ca83-41fb-98ad-77230a74bbbc,34c0cd50-905e-4ea6-9ccf-baeaa591e98a}'::"uuid"[],
'{NULL,NULL}'::"uuid"[]
) AS foo(id_fnd_users, id_app_apps,id_app_categories)
)
Запрос выполнен правильно, но моя запись не удалена. Я проверил идентификаторы и их порядок, и они в порядке. Поэтому я думаю, что это неправильный способ сделать это, но я не могу найти другой.
Заранее спасибо.