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