У меня есть таблица tab
с колоннами:Update и вставить случаи в PostGreSQL функции
userid, usercode, value
Я пишу plpgsql
функцию, обновление/вставить таблицу. В случае, если идентификатор пользователя & USERCODE существует Мне нужно обновить значение В случае, если они не мне нужно вставить новое значение
, например, если таблица данных:
userid, usercode, value
5 10 20
3 8 10
для вызова функции:
addvalue(5, 10 , 40)
addvalue(1, 12 , 40.5)
новые данные будут:
userid, usercode, value
5 10 60
3 8 10
1 12 40.5
Это моя функция тела:
CREATE OR REPLACE FUNCTION addvalue(xuserid integer, xusercode Integer,xvalue Numeric)
RETURNS integer AS
$BODY$
begin
insert into tab(userid,usercode,value) values(xuserid ,xusercode,xvalue);
return 1
end;
$BODY$
LANGUAGE plpgsql VOLATILE
Что такое лучший способ узнать, если мне нужно сделать INSERT
или UPDATE
statments?
Должен ли я делать UPDATE
и проверять, вернёт ли он 0 (обновлено 0 строк) и в этом случае сделать INSERT
? Или я должен запросить таблицу tab
, чтобы узнать, userid = xuserid and usercode = xusercode
?
Вы можете быть здесь: http://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql. Или обновите до postgres 9.5 и используйте 'upsert'. –
Я нахожусь на postgresql версии 9.0 и не могу обновить дальше ... пока нет. – quack
@quack - Из костяка Гордона вы *** могли *** искать в Интернете для любого из многих способов сделать «UPSERT» в PostgreSQL 9.0 ... http: //www.the-art-of-web .com/SQL/upsert / – MatBailie