Uz ma PG subtransakce? Tohle je vec ktera mi nejvic chybi – jak v prikazove radce (preklep v prikazu shodi celou transakci) tak i v aplikacich – treba pokud chci zmenit nejaky radek (nebo vlozit pokud neexistuje), muzu delat INSERT a v pripade vyjimky UPDATE.
A pak jeste packages – hlavne kvuli per-session promennym. Napriklad takto muze komunikovat for-each-row trigger s after-statement triggerem. Mozna se to da emulovat pomoci docasnych tabulek.
-Yenya
Packages chtějí všichni, ale nikdo neví jak na to – díky tomu, že PL v PostgreSQL není jen PLpgSQL, ale také PLPerl, PLPython a další. Osobně nečekám příliš velký pokrok – ale třeba se něco změní.
Podívej se na ON_ERROR_ROLLBACK nastavení v konzoli – mám pocit, že je to, to co chceš, nicméně jistý si nejsem – možná to bude funkční až v kombinaci s AUTOCOMMIT ON.
a) používat schémata
b) procedury psát do obyčejného souboru – jako klasický zdroják a importovat do db příkazem \i v konzoli.
c) používat kombinaci PL jazyků sql, plpgsql a plperl (případně výjmečně plperlu)
d) do kódu přídávat trasovací body – příkaz RAISE NOTICE, které jsme nemazali ale zakomentovali
+ klasika sw inženýrsví – čítelné komentáře, rozumně dlouhé procedury, atd atd další informace viz slajdy ze školení http://www.postgres.cz/index.php/Jednodenn%C3%AD_%C5%A1kolen%C3%AD_PostgreSQL#PostgreSQL_efektivn.C4.9B.2C_v.C3.BDvoj_.28ulo.C5.BEen.C3.A9_procedury.29
No je to tam dlouho – 8.1 za chvíli vyprší pětiletá podpora :)
jinak s dotazy ohledně pg http://groups.google.com/group/postgresql-cz?hl=cs
Pavel
Tak ono vytvářet spoustu savepointů asi taky není úplně optimální. V PL/pgSQL se to dá řešit celkem elegantně pomocí ošetření exceptions, s obyčejným SQL asi jenom ty savepointy).
Souhlasím že rekompilace package zásadní problém není – je ale potřeba aby všichni klienti počítali s tím že mohou po rekompilaci dostat exception a uměli na to správně zareagovat.