Názor k článku PostgreSQL 9.1 aneb stále vpřed od Pavel Stěhule - Kdyby byl typ record podobnější refernci v Javě...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 5. 2011 16:55

    Pavel Stěhule

    Kdyby byl typ record podobnější refernci v Javě nebo ukazateli v C, tak by o tom šlo uvažovat. Ale protože není, tak si myslím, že by to nadělalo větší paseku než užitek. PL/pgSQL vychází s ADY a je snaha, aby potenciálně chybný kód šel napsat hůře i za cenu větší ukecanosti správného kódu.

    Pokud Vám vadí nutnost testování TG_OP, tak piště triggery čistě pro jednotlivé události - nemá to žádný vliv na výkon. Musíte napsat víc omáčky :( ale zase kód může být o něco jednodušší a o fous rychlejší. Navíc pokud chcete porovnávat NEW a OLD tak je mnohem lepší tyto hodnoty porovnat mimo trigger - skrze podmíněný trigger. Tím můžete snížit počet volání triggeru (následně počet inicializací plpgsql) a urychlit provádění příkazu.

    http://developer.postgresql.org/pgdocs/postgres/sql-createtrigger.html

    CREATE TRIGGER log_update
        AFTER UPDATE ON accounts
        FOR EACH ROW
        WHEN (OLD.* IS DISTINCT FROM NEW.*)
        EXECUTE PROCEDURE log_account_update();