INSERT OR IGNORE
Положим, что в таблице используется первичный ключ, чтобы избежать дублирования данных. Некоторые БД (например, SQLite) при внесении данных допускаю конструкцию вида
INSERT OR IGNORE INTO tablename ...
и тогда попытки внести данные, нарушающие уникальность первичного ключа, молча игнорируются.
В PostgreSQL, к сожалению такой синтаксис не работает, но добиться требуемого функционала можно с помощью создания специального правила, обрабатывающего операции добавления в таблицу tablename с первичным ключом userkey:
CREATE OR REPLACE RULE "insert_test" AS
ON INSERT TO "tablename"
WHERE
EXISTS(SELECT 1 FROM tablename WHERE userkey=NEW.userkey)
DO INSTEAD NOTHING


Оставить комментарий