Kurzoros kérdésem lenne. pl/Sql-ben a kurzor vizsgálatánál ezt lehet írni: loop fetch kursor into valami1 , valami2 ;
exit when kurzor%NOTFOUND; történés; end loop;
Na most, kerestem hasonlót postgre-ben de nem találtam. Kérdésem, hogy hogyan lehet mysql-ben kurzort feldolgozni a fenntihez hasosnló módon? Most kezdek ismerkedni a postgre-lel.
Szia!
A NEW es OLD cuccosok (Legalabbis az Oracle-ben) csak a sorszintu triggereknel ertelmezettek, tehat a deklaracioban a trigger feltetel ele be kell szurni a for each row-t, egyebkent nem fog muxeni.
Lehet, hogy nem ez a legalkalmasabb topik rá, hogy érdeklődjek, de hirtelen ez volt a legjobb ötletem.
A gépem indításakor elindul a surface scan is. Amiből kiléptem, mert az életben nem sikerült volna belépni, ha hagyom. A kérdésem az lenne, hogy ha már reggel is észleltem, hogy akadozik a gépem, és ez is elindult, akkor a C meghajtó adja meg magát, esetleg vírust keresek vagy valami egyéb oka van.
A NEW és az OLD a Te szemszögedből valóban rekordnak néz ki, de asszem ezt másképp oldja meg az SQL. A lényeg az, hogy a benne lévő értékeket csak egyenként fogod tudni átadni. Ha simán nem eszi meg, akkor csinálj egy változót, tedd bele az értéket és úgy add át.
CREATE TRIGGER TBU_KERES FOR KERES
BEFORE UPDATE POSITION 0
AS
BEGIN
IF (OLD.PCK_STATUSZ <> NEW.PCK_STATUSZ) THEN
BEGIN
NEW.PCK_UTOLSO_IDOPONT = 'NOW';
IF (NEW.PCK_STATUSZ = 2) THEN
BEGIN
UPDATE TAG
SET TAG_INDITOTTCHAT_DARABSZAM = TAG_INDITOTTCHAT_DARABSZAM + 1
WHERE (TAG_KOD = NEW.PCK_HIVO_TAG_KOD);
UPDATE TAG
SET TAG_FOGADOTTCHAT_DARABSZAM = TAG_FOGADOTTCHAT_DARABSZAM + 1
WHERE (TAG_KOD = NEW.PCK_HIVOTT_TAG_KOD);
END
END
END !!
Szóval nem tudom mi lehet a gond, mert ezt a kódot az IB simán megeszi. Esetleg PSQL manual nem segít?
Egy tábla BEFORE UPDATE triggerére kapcsolt függvényében kellene figyelnem a tábla egy (vagy több) mezjének értékváltozását. Hogy milyen nevű mezőt (mezőket), és azok milyen változását (null-ra vált, not null-ra vált, esetleg egy konkrét értékű lesz), azt az adatbázisból veszem föl.
Valami ilyesmiről van szó (plpgsql-ben):
IF (NEW.xxx null) THEN ...
Itt az xxx helyére kellene belevarázsolni pl. az hogy "name_field".
Ott szaladtam bele a csapdába, hogy a dinamikus queri nem ismeri a NEW.-ot!
Arra nem bírtam rájönni, hogy a NEW. ill OLD. struktúrát (ami rekord?) hogyan passzolhatnám tovább paraméterként egy másik "normális" függvénynek, ami már bele tudná tenni egy dinamikus queribe azt az SQL utasítást, ami nekem kellene.