因此,正如标题所述,我试图组装触发器,以确保您不能提取超过当前余额的款项。
Translation;
Saldo = balance
Belopp = amount
Create or replace trigger bifer_uttag
before insert
on UTTAG
for each row
begin
IF get_saldo (:new.belopp > :old.belopp)
Then
raise_applicaton_error( -20001, 'snålt saldo!');
end if;
end;
但是我得到了
所以我想我的函数(Get_saldo)调用了它吗?
create or replace function get_saldo(
p_knr in kontotest.knr%type
)
return number
as
v_saldo number := 0 ;
begin
select sum( saldo)
into v_saldo
from konto
where knr = p_knr ;
return v_saldo ;
end;
/
感谢任何帮助。
更新,获取错误:TRIGGER BIFER_UTTAG行/行:2/2 PL / SQL:语句被忽略行/行:2/5 PLS-00306:调用'GET_SALDO'时参数或参数类型错误< / strong>
答案 0 :(得分:1)
您需要将帐号传递给函数调用,然后进行比较-
Create or replace trigger bifer_uttag
before insert
on UTTAG
for each row
begin
IF get_saldo(:new.knr) > :new.belopp
Then
raise_applicaton_error( -20001, snålt saldo!');
end if;
end;
答案 1 :(得分:1)
CREATE OR replace TRIGGER bifer_uttag
BEFORE INSERT ON uttag
FOR EACH ROW
BEGIN
IF get_saldo(:new.knr) > :new.belopp THEN
Raise_application_error(-20001, 'snålt saldo!');
END IF;
END;