@@ -33,7 +33,7 @@ CREATE [ CONSTRAINT ] TRIGGER <replaceable class="parameter">name</replaceable>
3333 [ REFERENCING { { OLD | NEW } TABLE [ AS ] <replaceable class="parameter">transition_relation_name</replaceable> } [ ... ] ]
3434 [ FOR [ EACH ] { ROW | STATEMENT } ]
3535 [ WHEN ( <replaceable class="parameter">condition</replaceable> ) ]
36- EXECUTE PROCEDURE <replaceable class="parameter">function_name</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
36+ EXECUTE { FUNCTION | PROCEDURE } <replaceable class="parameter">function_name</replaceable> ( <replaceable class="parameter">arguments</replaceable> )
3737
3838<phrase>where <replaceable class="parameter">event</replaceable> can be one of:</phrase>
3939
@@ -401,6 +401,14 @@ UPDATE OF <replaceable>column_name1</replaceable> [, <replaceable>column_name2</
401401 and returning type <literal>trigger</literal>, which is executed when
402402 the trigger fires.
403403 </para>
404+
405+ <para>
406+ In the syntax of <literal>CREATE TRIGGER</literal>, the keywords
407+ <literal>FUNCTION</literal> and <literal>PROCEDURE</literal> are
408+ equivalent, but the referenced function must in any case be a function,
409+ not a procedure. The use of the keyword <literal>PROCEDURE</literal>
410+ here is historical and deprecated.
411+ </para>
404412 </listitem>
405413 </varlistentry>
406414
@@ -555,7 +563,7 @@ UPDATE OF <replaceable>column_name1</replaceable> [, <replaceable>column_name2</
555563CREATE TRIGGER check_update
556564 BEFORE UPDATE ON accounts
557565 FOR EACH ROW
558- EXECUTE PROCEDURE check_account_update();
566+ EXECUTE FUNCTION check_account_update();
559567</programlisting>
560568
561569 The same, but only execute the function if column <literal>balance</literal>
@@ -565,7 +573,7 @@ CREATE TRIGGER check_update
565573CREATE TRIGGER check_update
566574 BEFORE UPDATE OF balance ON accounts
567575 FOR EACH ROW
568- EXECUTE PROCEDURE check_account_update();
576+ EXECUTE FUNCTION check_account_update();
569577</programlisting>
570578
571579 This form only executes the function if column <literal>balance</literal>
@@ -576,7 +584,7 @@ CREATE TRIGGER check_update
576584 BEFORE UPDATE ON accounts
577585 FOR EACH ROW
578586 WHEN (OLD.balance IS DISTINCT FROM NEW.balance)
579- EXECUTE PROCEDURE check_account_update();
587+ EXECUTE FUNCTION check_account_update();
580588</programlisting>
581589
582590 Call a function to log updates of <literal>accounts</literal>, but only if
@@ -587,7 +595,7 @@ CREATE TRIGGER log_update
587595 AFTER UPDATE ON accounts
588596 FOR EACH ROW
589597 WHEN (OLD.* IS DISTINCT FROM NEW.*)
590- EXECUTE PROCEDURE log_account_update();
598+ EXECUTE FUNCTION log_account_update();
591599</programlisting>
592600
593601 Execute the function <function>view_insert_row</function> for each row to insert
@@ -597,7 +605,7 @@ CREATE TRIGGER log_update
597605CREATE TRIGGER view_insert
598606 INSTEAD OF INSERT ON my_view
599607 FOR EACH ROW
600- EXECUTE PROCEDURE view_insert_row();
608+ EXECUTE FUNCTION view_insert_row();
601609</programlisting>
602610
603611 Execute the function <function>check_transfer_balances_to_zero</function> for each
@@ -609,7 +617,7 @@ CREATE TRIGGER transfer_insert
609617 AFTER INSERT ON transfer
610618 REFERENCING NEW TABLE AS inserted
611619 FOR EACH STATEMENT
612- EXECUTE PROCEDURE check_transfer_balances_to_zero();
620+ EXECUTE FUNCTION check_transfer_balances_to_zero();
613621</programlisting>
614622
615623 Execute the function <function>check_matching_pairs</function> for each row to
@@ -621,7 +629,7 @@ CREATE TRIGGER paired_items_update
621629 AFTER UPDATE ON paired_items
622630 REFERENCING NEW TABLE AS newtab OLD TABLE AS oldtab
623631 FOR EACH ROW
624- EXECUTE PROCEDURE check_matching_pairs();
632+ EXECUTE FUNCTION check_matching_pairs();
625633</programlisting>
626634 </para>
627635
0 commit comments