我在我的程序中遇到了這個問題。PL/pgSQL觸發功能不能正常工作
該函數的目的是實現一個觸發器,檢查用戶(utente)是否有足夠的錢在自己的帳戶(saldo)上以便將自己添加到騎乘(boleia)。
我可以從我的函數的行爲中收集用戶(Utente)和乘車(Boleia),但是他們的屬性,特別是他的平衡(saldo)沒有被正確訪問。這是因爲,每次我嘗試添加用戶時,都會遇到例外情況,這意味着用戶沒有足夠的資金投入。
我想不出任何我可能會做錯的事情。 Utente和Boleia表都被正確插入,每個屬性都被插入,但我似乎無法在我的函數中訪問它們。
下面是代碼的功能:
create or replace function assocpass_trigger_proc() returns trigger
as $$
declare
x record;
y record;
balancetemp numeric;
begin
select into x * from Utente where(nick=new.nick_passenger);
select into y * from Boleia
where(nick=new.nick_planner and date_time=new.date_time);
select x.balance into balancetemp;
if(found and (balancetemp>=y.cost_passenger)) then
update Utente set balance = balancetemp-y.cost_passenger
where Utente.nick = new.nick_passenger;
insert into InscricaoP(nick_passenger,nick_planner,data_hora)
values(new.nick_passenger, new.nick_planner, new.date_time);
elseif(found and (x.saldo<y.custo_passageiro)) then
raise exception 'O Utente não tem saldo suficiente';
else
raise exception 'A Boleia não existe';
end if;
end
$$ language plpgsql;
這裏是關係的插入:
insert into InscricaoP(nick_planner,date_time,nick_passenger)
values('zero','15/06','cinco');
兩個nick_planner和nick_passenger來自 「用戶」(Utilizador)實體 Date_time和cost_passenger來自「ride」(Boleia)實體。
這不是PLSQL,它的PL/pgSQL的它是相當不同的方言......正確標記你的問題,以避免誤解。 – a1ex07
'/'被自動刪除。但下次我會更加小心,我的道歉。 – Ehpansei
這不是關於'/'。 'PL/pgSQL'或者簡單的'plpgsql'是PostgreSQL的默認過程語言。 「PL/SQL」與Oracle相當。 –