ORACLE & trigger

Vladimir Naprstek vladimir.naprstek na prodeco.cz
Úterý Únor 15 10:04:27 CET 2000


Honza Pazdziora wrote:

> On Tue, Feb 15, 2000 at 09:08:27AM +0100, Jan Serak wrote:
>
> > > Existuje v triggeru jiná možnost jak zjistit, že se určité pole změnilo,
> > > než porovnáním :old.atribut <> :new.atribut ?
> >
> > Je to zbytecne. Pokud myslite pod pojmem 'zmenilo', ze nova hodnota je jina
> > nez stara, pak presne na to je operator <> a jiny predikat by jej duplikoval.

No, já mám totiž takový malý problém. Používám WebDB a pokud použiji tento SW a
měním data v tabulce, tak dostanu hlášku:
ORA-06502: PL/SQL: číselná nebo hodnotová chyba. V sqlplus obdobná změna proběhne
bez problémů. Už mám ověřeno, že jde o bug, ale než nainstaluji novou verzi,
pokouším se hledat dočasné řešení....
Ten můj trigger obsahuje na inkriminované řádce právě IF (:old.approval <>
:new.approval) THEN

> Pouze pozor na null hodnoty -- ty je potreba osetrit zvlast. Vcelku se
> mi na to osvedcilo
>
>         if decode(:old.atribut, :new.atribut, 0, 1) > 1 then

Jo, to zkusím... (akorát se musím vyrovnat s hláškou PLS-00204: funkci nebo
pseudosloupec 'DECODE' lze použít pouze uvnitř příkazu SQL)

--
Vladimir Naprstek
e-mail vladimir.naprstek na prodeco.cz





Další informace o konferenci Test