Я хочу выполнить набор запросов для вставки некоторых данных в таблицу 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
не являются уникальными полями; записи с одним и тем же идентификатором фонда или датой будут существовать, но ни одна запись не должна иметь тот же идентификатор фонда и дату, что и другая.