> // check if entry already exists
> SELECT COUNT(*) FROM tablename WHERE [cond]
> ..
> if($count >0)
> UPDATE
> else
> INSERT
>
> but this will double the hit to the database server, because
> for every
> operation I need to do SELECT COUNT(*) first. The data itself
> is not a lot,
> and the condition is not complex, but the hitting frequency is a lot.
Why not use plpgsql?
CREATE FUNCTION a_test(int4) RETURNS int AS '
DECLARE
totest int;
BEGIN
SELECT INTO totest <ID> FROM <table> WHERE <ID> = $1;
IF totest IS null THEN
-- do insert.
return 1;
ELSE
-- do update.
return 0;
END IF;
END;
' language 'plpgsql';
For efficiency make sure ID is a index...
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера