0
我有更新一些字段,我在PostgresSql中開發的功能,但我有問題,當我執行功能程序(Navicat或Pgadmin)問我「Excuse!函數返回<>!回滾或提交」附加消息的屏幕截圖message! 當我按提交或回滾時,這是工作!但我想自動提交,絕不會問我任何問題! 我試圖寫BEGIN,結束但仍然是消息!如何自動提交Postgres函數?
這裏是我的代碼:
CREATE OR REPLACE FUNCTION "whis2011"."ComputeRtbAdPlaceCtr"() RETURNS "void"
AS $BODY$
BEGIN
UPDATE "whis2011"."RtbActiveSitePlaces"
SET "Ctr" = vl."ctr",
"AverageCpm" = vl."avcpm",
"AverageClickCost" = vl."avclickcost",
"IsCtrPredicted" = vl."isctrpredicted",
"ComputedBalance" = vl."balance"
FROM "whis2011"."RtbActiveSitePlaces" pl
JOIN "whis2011"."View_RtbActiveSitePlacesCtrWeekly" vl on pl."Id" = vl."Id";
END;
$BODY$
LANGUAGE plpgsql
COST 100
CALLED ON NULL INPUT
SECURITY INVOKER
VOLATILE;
只需將您的SQL客戶端設置爲autocommit即可。 –
'FROM「whis2011」。「RtbActiveSitePlaces」pl'您應該**不要**將目標表包含在Postgres SQL中的FROM ...列表中。 (並且你不需要plpgsql進行這個簡單的更新,普通的SQL會這樣做) – wildplasser
這個問題並不清楚。也許你正在用'BEGIN'和['COMMIT'](https://www.postgresql.org/docs/current/static/sql-commit.html)函數的'BEGIN'和'END'來處理事務處理在SQL中? Postgres函數本身不能自動提交 - 這取決於調用SQL上下文。 –