On 10/17/2012 10:46 AM, Greg Stark wrote:
I dislike both of the explanations above which don't actually explain why people shouldn't use rules (Josh does say they're tricky which is a start). Just telling people we hate parts of the system doesn't really come off well and leaves them wondering why. I would suggest something like Warning: RULES are tricky to use correctly. They rewrite the original query into a new query before it is run and it is very hard to correctly anticipate and rewrite every possible input query into the desired result. There are also unexpected interactions with other components when RULES do something unexpected such as rewrite a single query to return two result sets. For most applications it's much simpler and more predictable to use TRIGGERs. ROW level triggers are evaluated for each row the original query is about to process (or has just finished processing) and this makes them much easier to follow. Statement level TRIGGERs can be used for audit logs and similar operations which need to run once per statement.
I am not sure where to stick it but we should also include the fact that rules are almost always slower that a trigger/function comparative.
Sincerely, JD
-- Command Prompt, Inc. - http://www.commandprompt.com/ PostgreSQL Support, Training, Professional Services and Development High Availability, Oracle Conversion, Postgres-XC @cmdpromptinc - 509-416-6579 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers