![](/img/trans.png)
[英]How to dual write to two columns in one table using Postgres trigger?
[英]how to pass the new old identifier with userenv from dual table in postgres trigger
我將 oracle 腳本轉換為 PostgreSQL ,這需要用戶更新 Oracle 中的最后登錄信息觸發我使用的這個:
if inserting then
:new.last_update := sysdate
select osuser into :new.updated_by from gv@session where audsid =
(select userenv('sessionid') from dual);
end if;
我怎樣才能轉換為 postgres? 我在 select... from dual 和 dual is not postgres 中的表之后卡住了。
if TG_OP = 'INSERT' then
new.last_update :=current_timestamp;
SELECT usename INTO :new.update_by
FROM pg_user
WHERE usesysid = (SELECT ..(I got stuck here)
RETURN NEW;
END IF;
如何獲得觸發器 function 將與雙表正常工作?
首先讓我們弄清楚dual
問題。 Oracle 語法要求完成 FROM 子句。 當沒有實際表而不是子選擇時,使用對偶來完成所需的語法。 Postgres 不需要完成 FROM 子句。 以下是相同的查詢。
Oracle: Postgres:
Select 'abc' from dual; Select 'abc';
你的另一個問題,看起來你運氣不好。 在 Oracle 中,變量OSUSER
是客戶端上的用戶(通過 Oracle 客戶端 - OCI),即使該用戶 ID 與用於登錄數據庫的用戶 ID 不同。 然而,Postgres 不提供此功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.