Dear all, I have a single "source" table that is referenced by six specialization tables, which include: "journal_article" "report" 4 more.... There is a "citation" column in the source, which is what will be displayed to users. This is generated by a trigger function on each specialization table that calls a function to generate the citation, and saves it on the "source" table. Running the function get_report_citation(<source>, <report>) takes ~2ms, but when run as a trigger it takes ~5000 ms! e.g.: """ update source set citation = get_report_citation( (select source from source where id = NEW.source_ptr_id), NEW ); """ If I take the citation out of line, this time is reduced to ~300ms, but that's still v slow: """ cit = get_report_citation((select source from source where id = NEW.source_ptr_id), NEW); update source set citation = cit; """ If I use the following hack in this trigger, which forces the source row to update itself (with a separate trigger) it takes >6000ms! """ update source set citation = ''; """ Looking in the server monitor, there appears to be a lot of locking happening that I don't fully understand. Would anyone know of a better method here? I'm on 8.3.11. Thanks Will Temperley -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general