Aktualizacja za pomocą zapytania wielokolumnowego + Firebird

0

Witam probuje zrobic trigera, ktory sprawdzi mi pewne dane i zrobi update dwoch wartosci za pomoca jednego zapytania. To moj przyklad:

AS
begin
if (((new.licznik is null) or (new.licznik=0) or (new.mianownik is null) or (new.mianownik=0)) and new.idstanu>0) then
update oproc set (Licznik,mianownik)=(select p.trybods_licz,p.trybods from stan s,plankt p where s.konto=p.nr_kt and s.idstan=idstanu) where idoproc=new.idoproc;
end

Jest to mozna by rzec ksiazkowo napisany przyklad, lecz na firebirdzie nie chce sie to skompilowac (Parsing error!). Czy ktos wie jak to dopasowac do firebirda 2.5. Bede wdzieczny za jakie kolwiek wskazówki.

0
svenson napisał(a)

Witam probuje zrobic trigera, ktory sprawdzi mi pewne dane i zrobi update dwoch wartosci za pomoca jednego zapytania. To moj przyklad:

AS
begin
if (((new.licznik is null) or (new.licznik=0) or (new.mianownik is null) or (new.mianownik=0)) and new.idstanu>0) then
update oproc set (Licznik,mianownik)=(select p.trybods_licz,p.trybods from stan s,plankt p where s.konto=p.nr_kt and s.idstan=idstanu) where idoproc=new.idoproc;
end

Jest to mozna by rzec ksiazkowo napisany przyklad, lecz na firebirdzie nie chce sie to skompilowac (Parsing error!). Czy ktos wie jak to dopasowac do firebirda 2.5. Bede wdzieczny za jakie kolwiek wskazówki.

A nie możesz tego rozbić na dwa ? Wtedy powinno zadziałać. Nie wiem jakie masz relacje, ale przy podzapytaniach trzeba uważać na więcej niż jeden wynik SELECT'a. Można zrobić jakiegoś agregata, albo chociaż SELECT FIRST 1 ...
Albo jak to jest w triggerze, to pobierz sobie te dwa pola (zadeklaruj dwie zmienne) a potem zrób update.

b

0

FB nie wspiera czegoś takiego. Ale to oczywiście wiesz bo w końcu CZYTAŁEŚ TEGO *** MANUALA przecież...

BTW http://www.firebirdfaq.org/faq323/

0

Dzieki za pomoc, dwoma zapytania dziala, sprawdzalem wczesniej, ale chcialem zrobic jednym (by dzialalo szybciej) .
Ale teraz przynajmniej wiem, ze na fb to nie pojdzie.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0