Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite0dc839

Browse files
committed
Change PROCEDURE to FUNCTION in CREATE TRIGGER syntax
Since procedures are now a different thing from functions, change theCREATE TRIGGER and CREATE EVENT TRIGGER syntax to use FUNCTION in theclause that specifies the function. PROCEDURE is still accepted forcompatibility.pg_dump and ruleutils.c output is not changed yet, because that wouldrequire a change in information_schema.sql and thus a catversion change.Reported-by: Peter Geoghegan <pg@bowt.ie>Reviewed-by: Jonathan S. Katz <jonathan.katz@excoventures.com>
1 parentfd4417e commite0dc839

File tree

16 files changed

+62
-41
lines changed

16 files changed

+62
-41
lines changed

‎doc/src/sgml/ddl.sgml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3580,7 +3580,7 @@ LANGUAGE plpgsql;
35803580
<programlisting>
35813581
CREATE TRIGGER insert_measurement_trigger
35823582
BEFORE INSERT ON measurement
3583-
FOR EACH ROW EXECUTEPROCEDURE measurement_insert_trigger();
3583+
FOR EACH ROW EXECUTEFUNCTION measurement_insert_trigger();
35843584
</programlisting>
35853585

35863586
We must redefine the trigger function each month so that it always

‎doc/src/sgml/event-trigger.sgml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ CREATE FUNCTION noddl() RETURNS event_trigger
10441044
AS 'noddl' LANGUAGE C;
10451045

10461046
CREATE EVENT TRIGGER noddl ON ddl_command_start
1047-
EXECUTEPROCEDURE noddl();
1047+
EXECUTEFUNCTION noddl();
10481048
</programlisting>
10491049
</para>
10501050

@@ -1129,7 +1129,7 @@ $$;
11291129

11301130
CREATE EVENT TRIGGER no_rewrite_allowed
11311131
ON table_rewrite
1132-
EXECUTEPROCEDURE no_rewrite();
1132+
EXECUTEFUNCTION no_rewrite();
11331133
</programlisting>
11341134
</para>
11351135
</sect1>

‎doc/src/sgml/func.sgml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20594,7 +20594,7 @@ SELECT (pg_stat_file('filename')).modification;
2059420594
<programlisting>
2059520595
CREATE TRIGGER z_min_update
2059620596
BEFORE UPDATE ON tablename
20597-
FOR EACH ROW EXECUTEPROCEDURE suppress_redundant_updates_trigger();
20597+
FOR EACH ROW EXECUTEFUNCTION suppress_redundant_updates_trigger();
2059820598
</programlisting>
2059920599
In most cases, you would want to fire this trigger last for each row.
2060020600
Bearing in mind that triggers fire in name order, you would then
@@ -20846,7 +20846,7 @@ END
2084620846
$$;
2084720847
CREATE EVENT TRIGGER test_event_trigger_for_drops
2084820848
ON sql_drop
20849-
EXECUTEPROCEDURE test_event_trigger_for_drops();
20849+
EXECUTEFUNCTION test_event_trigger_for_drops();
2085020850
</programlisting>
2085120851
</para>
2085220852
</sect2>
@@ -20911,7 +20911,7 @@ $$;
2091120911

2091220912
CREATE EVENT TRIGGER test_table_rewrite_oid
2091320913
ON table_rewrite
20914-
EXECUTEPROCEDURE test_event_trigger_table_rewrite_oid();
20914+
EXECUTEFUNCTION test_event_trigger_table_rewrite_oid();
2091520915
</programlisting>
2091620916
</para>
2091720917
</sect2>

‎doc/src/sgml/information_schema.sgml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5793,7 +5793,7 @@ ORDER BY c.ordinal_position;
57935793
<entry><type>character_data</type></entry>
57945794
<entry>
57955795
Statement that is executed by the trigger (currently always
5796-
<literal>EXECUTEPROCEDURE
5796+
<literal>EXECUTEFUNCTION
57975797
<replaceable>function</replaceable>(...)</literal>)
57985798
</entry>
57995799
</row>

‎doc/src/sgml/lo.sgml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
CREATE TABLE image (title text, raster lo);
7171

7272
CREATE TRIGGER t_raster BEFORE UPDATE OR DELETE ON image
73-
FOR EACH ROW EXECUTEPROCEDURE lo_manage(raster);
73+
FOR EACH ROW EXECUTEFUNCTION lo_manage(raster);
7474
</programlisting>
7575

7676
<para>

‎doc/src/sgml/plperl.sgml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,7 +1300,7 @@ $$ LANGUAGE plperl;
13001300

13011301
CREATE TRIGGER test_valid_id_trig
13021302
BEFORE INSERT OR UPDATE ON test
1303-
FOR EACH ROW EXECUTEPROCEDURE valid_id();
1303+
FOR EACH ROW EXECUTEFUNCTION valid_id();
13041304
</programlisting>
13051305
</para>
13061306
</sect1>
@@ -1350,7 +1350,7 @@ $$ LANGUAGE plperl;
13501350

13511351
CREATE EVENT TRIGGER perl_a_snitch
13521352
ON ddl_command_start
1353-
EXECUTEPROCEDURE perlsnitch();
1353+
EXECUTEFUNCTION perlsnitch();
13541354
</programlisting>
13551355
</para>
13561356
</sect1>

‎doc/src/sgml/plpgsql.sgml‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4069,7 +4069,7 @@ CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
40694069
$emp_stamp$ LANGUAGE plpgsql;
40704070

40714071
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
4072-
FOR EACH ROW EXECUTEPROCEDURE emp_stamp();
4072+
FOR EACH ROW EXECUTEFUNCTION emp_stamp();
40734073
</programlisting>
40744074
</example>
40754075

@@ -4124,7 +4124,7 @@ $emp_audit$ LANGUAGE plpgsql;
41244124

41254125
CREATE TRIGGER emp_audit
41264126
AFTER INSERT OR UPDATE OR DELETE ON emp
4127-
FOR EACH ROW EXECUTEPROCEDURE process_emp_audit();
4127+
FOR EACH ROW EXECUTEFUNCTION process_emp_audit();
41284128
</programlisting>
41294129
</example>
41304130

@@ -4203,7 +4203,7 @@ $$ LANGUAGE plpgsql;
42034203

42044204
CREATE TRIGGER emp_audit
42054205
INSTEAD OF INSERT OR UPDATE OR DELETE ON emp_view
4206-
FOR EACH ROW EXECUTEPROCEDURE update_emp_view();
4206+
FOR EACH ROW EXECUTEFUNCTION update_emp_view();
42074207
</programlisting>
42084208
</example>
42094209

@@ -4348,7 +4348,7 @@ $maint_sales_summary_bytime$ LANGUAGE plpgsql;
43484348

43494349
CREATE TRIGGER maint_sales_summary_bytime
43504350
AFTER INSERT OR UPDATE OR DELETE ON sales_fact
4351-
FOR EACH ROW EXECUTEPROCEDURE maint_sales_summary_bytime();
4351+
FOR EACH ROW EXECUTEFUNCTION maint_sales_summary_bytime();
43524352

43534353
INSERT INTO sales_fact VALUES(1,1,1,10,3,15);
43544354
INSERT INTO sales_fact VALUES(1,2,1,20,5,35);
@@ -4425,15 +4425,15 @@ $emp_audit$ LANGUAGE plpgsql;
44254425
CREATE TRIGGER emp_audit_ins
44264426
AFTER INSERT ON emp
44274427
REFERENCING NEW TABLE AS new_table
4428-
FOR EACH STATEMENT EXECUTEPROCEDURE process_emp_audit();
4428+
FOR EACH STATEMENT EXECUTEFUNCTION process_emp_audit();
44294429
CREATE TRIGGER emp_audit_upd
44304430
AFTER UPDATE ON emp
44314431
REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
4432-
FOR EACH STATEMENT EXECUTEPROCEDURE process_emp_audit();
4432+
FOR EACH STATEMENT EXECUTEFUNCTION process_emp_audit();
44334433
CREATE TRIGGER emp_audit_del
44344434
AFTER DELETE ON emp
44354435
REFERENCING OLD TABLE AS old_table
4436-
FOR EACH STATEMENT EXECUTEPROCEDURE process_emp_audit();
4436+
FOR EACH STATEMENT EXECUTEFUNCTION process_emp_audit();
44374437
</programlisting>
44384438
</example>
44394439

@@ -4498,7 +4498,7 @@ BEGIN
44984498
END;
44994499
$$ LANGUAGE plpgsql;
45004500

4501-
CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTEPROCEDURE snitch();
4501+
CREATE EVENT TRIGGER snitch ON ddl_command_start EXECUTEFUNCTION snitch();
45024502
</programlisting>
45034503
</example>
45044504
</sect2>

‎doc/src/sgml/pltcl.sgml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ $$ LANGUAGE pltcl;
789789
CREATE TABLE mytab (num integer, description text, modcnt integer);
790790

791791
CREATE TRIGGER trig_mytab_modcount BEFORE INSERT OR UPDATE ON mytab
792-
FOR EACH ROW EXECUTEPROCEDURE trigfunc_modcount('modcnt');
792+
FOR EACH ROW EXECUTEFUNCTION trigfunc_modcount('modcnt');
793793
</programlisting>
794794

795795
Notice that the trigger function itself does not know the column
@@ -852,7 +852,7 @@ CREATE OR REPLACE FUNCTION tclsnitch() RETURNS event_trigger AS $$
852852
elog NOTICE "tclsnitch: $TG_event $TG_tag"
853853
$$ LANGUAGE pltcl;
854854

855-
CREATE EVENT TRIGGER tcl_a_snitch ON ddl_command_start EXECUTEPROCEDURE tclsnitch();
855+
CREATE EVENT TRIGGER tcl_a_snitch ON ddl_command_start EXECUTEFUNCTION tclsnitch();
856856
</programlisting>
857857
</para>
858858
</sect1>

‎doc/src/sgml/ref/create_event_trigger.sgml‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ PostgreSQL documentation
2424
CREATE EVENT TRIGGER <replaceable class="parameter">name</replaceable>
2525
ON <replaceable class="parameter">event</replaceable>
2626
[ WHEN <replaceable class="parameter">filter_variable</replaceable> IN (filter_value [, ... ]) [ AND ... ] ]
27-
EXECUTE PROCEDURE <replaceable class="parameter">function_name</replaceable>()
27+
EXECUTE{ FUNCTION |PROCEDURE } <replaceable class="parameter">function_name</replaceable>()
2828
</synopsis>
2929
</refsynopsisdiv>
3030

@@ -98,6 +98,14 @@ CREATE EVENT TRIGGER <replaceable class="parameter">name</replaceable>
9898
A user-supplied function that is declared as taking no argument and
9999
returning type <literal>event_trigger</literal>.
100100
</para>
101+
102+
<para>
103+
In the syntax of <literal>CREATE EVENT TRIGGER</literal>, the keywords
104+
<literal>FUNCTION</literal> and <literal>PROCEDURE</literal> are
105+
equivalent, but the referenced function must in any case be a function,
106+
not a procedure. The use of the keyword <literal>PROCEDURE</literal>
107+
here is historical and deprecated.
108+
</para>
101109
</listitem>
102110
</varlistentry>
103111

@@ -136,7 +144,7 @@ END;
136144
$$;
137145

138146
CREATE EVENT TRIGGER abort_ddl ON ddl_command_start
139-
EXECUTEPROCEDURE abort_any_command();
147+
EXECUTEFUNCTION abort_any_command();
140148
</programlisting></para>
141149
</refsect1>
142150

‎doc/src/sgml/ref/create_trigger.sgml‎

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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</
555563
CREATE TRIGGER check_update
556564
BEFORE UPDATE ON accounts
557565
FOR EACH ROW
558-
EXECUTEPROCEDURE check_account_update();
566+
EXECUTEFUNCTION 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
565573
CREATE TRIGGER check_update
566574
BEFORE UPDATE OF balance ON accounts
567575
FOR EACH ROW
568-
EXECUTEPROCEDURE check_account_update();
576+
EXECUTEFUNCTION 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-
EXECUTEPROCEDURE check_account_update();
587+
EXECUTEFUNCTION 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-
EXECUTEPROCEDURE log_account_update();
598+
EXECUTEFUNCTION 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
597605
CREATE TRIGGER view_insert
598606
INSTEAD OF INSERT ON my_view
599607
FOR EACH ROW
600-
EXECUTEPROCEDURE view_insert_row();
608+
EXECUTEFUNCTION 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-
EXECUTEPROCEDURE check_transfer_balances_to_zero();
620+
EXECUTEFUNCTION 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-
EXECUTEPROCEDURE check_matching_pairs();
632+
EXECUTEFUNCTION check_matching_pairs();
625633
</programlisting>
626634
</para>
627635

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp