Я хочу запустить набор запросов для вставки некоторых данных в таблицу SQL, но только если выполняется запись, удовлетворяющая определенным критериям. Таблица имеет 4 поля: id
(первичный), fund_id
, date
и price
У меня есть 3 поля в запросе: fund_id
, date
и price
.
Итак, мой запрос будет выглядеть примерно так:
INSERT INTO funds (fund_id, date, price)
VALUES (23, '2013-02-12', 22.43)
WHERE NOT EXISTS (
SELECT *
FROM funds
WHERE fund_id = 23
AND date = '2013-02-12'
);
Поэтому я хочу только вставить данные, если запись, соответствующая fund_id
и date
, еще не существует. Если вышесказанное верно, это выглядит довольно неэффективным способом достижения этого, так как каждый раз должен выполняться дополнительный оператор select.
Есть ли лучший способ достижения вышеуказанного?
Изменить: для пояснения ни fund_id
, ни date
не являются уникальными полями; записи, имеющие один и тот же файл fund_id или date, будут существовать, но ни одна запись не должна иметь как тот же fund_id, ни дату как другой.