psani funkce v pgsql

Jiri Chaloupka dev na b2bexpander.com
Středa Listopad 20 23:12:59 CET 2002


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Pokud panove dovolite, budu jeste chvili pokracovat s ptanim ...

takze jsem se posti jinym smerem.
mam funkci a trigger:

create function default_phoneid_insells() returns opaque as '
- -- Funkce slouzi k prevodu linku na id z tabulky 
- --   pred pripadnym smazanim telefonu z databaze
  BEGIN

    -- provedu vlastni prevod
    update sells set phoneid = 0 where phoneid = OLD.id;

    return NEW;
  END;
' language 'plpgsql';

CREATE TRIGGER t_sells_changephid
  BEFORE DELETE ON phones
  FOR EACH ROW EXECUTE PROCEDURE default_phoneid_insells();

nicmene dostavam:
db=# select count(*) from phones where id = 10000;
 count
- -------
     1
(1 row)

db=# select count(*) from sells where phoneid = 10000;
 count
- -------
     1
(1 row)

db=# delete from phones where id = 10000;
DELETE 0
db=# select count(*) from sells where phoneid = 10000;
 count
- -------
     0
(1 row)
db=# select count(*) from phones where id = 10000;
 count
- -------
     1
(1 row)



trigger zafunguje, funkce zmeni to co zmenit ma v cilove tabulce, ovsem 
vlastni smazani se neprovede.

Kde jsem udelal chybu? pokud dobre chapu, tak v kdyz se v poradku provedla 
funkce, mel se vykonat i inicializacni prikaz (delete) ...

Dik Jirka
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)

iD8DBQE93AjuvYSoX+V7iM0RAp+pAKCwRiD0wFUR5TywdZ1PkRhTrW1RCQCgkqoR
g5KLPdTkEyUiDQ36Lu5Xdjc=
=mxf4
-----END PGP SIGNATURE-----



Další informace o konferenci Databases