22
22
return new;
23
23
end if; end;
24
24
$$ language plpgsql;
25
+ /* Enable our precious custom node */
26
+ set pg_pathman.enable_partitionrouter = t;
27
+ /*
28
+ * Statement level triggers
29
+ */
30
+ create trigger bus before update ON test_update_triggers.test
31
+ execute procedure test_update_triggers.test_trigger ();
32
+ create trigger bds before delete ON test_update_triggers.test
33
+ execute procedure test_update_triggers.test_trigger ();
34
+ create trigger bis before insert ON test_update_triggers.test
35
+ execute procedure test_update_triggers.test_trigger ();
36
+ create trigger aus after update ON test_update_triggers.test
37
+ execute procedure test_update_triggers.test_trigger ();
38
+ create trigger ads after delete ON test_update_triggers.test
39
+ execute procedure test_update_triggers.test_trigger ();
40
+ create trigger ais after insert ON test_update_triggers.test
41
+ execute procedure test_update_triggers.test_trigger ();
42
+ create trigger bus before update ON test_update_triggers.test_1
43
+ execute procedure test_update_triggers.test_trigger ();
44
+ create trigger bds before delete ON test_update_triggers.test_1
45
+ execute procedure test_update_triggers.test_trigger ();
46
+ create trigger bis before insert ON test_update_triggers.test_1
47
+ execute procedure test_update_triggers.test_trigger ();
48
+ create trigger aus after update ON test_update_triggers.test_1
49
+ execute procedure test_update_triggers.test_trigger ();
50
+ create trigger ads after delete ON test_update_triggers.test_1
51
+ execute procedure test_update_triggers.test_trigger ();
52
+ create trigger ais after insert ON test_update_triggers.test_1
53
+ execute procedure test_update_triggers.test_trigger ();
54
+ create trigger bus before update ON test_update_triggers.test_2
55
+ execute procedure test_update_triggers.test_trigger ();
56
+ create trigger bds before delete ON test_update_triggers.test_2
57
+ execute procedure test_update_triggers.test_trigger ();
58
+ create trigger bis before insert ON test_update_triggers.test_2
59
+ execute procedure test_update_triggers.test_trigger ();
60
+ create trigger aus after update ON test_update_triggers.test_2
61
+ execute procedure test_update_triggers.test_trigger ();
62
+ create trigger ads after delete ON test_update_triggers.test_2
63
+ execute procedure test_update_triggers.test_trigger ();
64
+ create trigger ais after insert ON test_update_triggers.test_2
65
+ execute procedure test_update_triggers.test_trigger ();
66
+ /* multiple values */
67
+ insert into test_update_triggers.test select generate_series(1, 200);
68
+ NOTICE: BEFORE INSERT STATEMENT (test)
69
+ NOTICE: AFTER INSERT STATEMENT (test)
70
+ update test_update_triggers.test set val = val + 1;
71
+ NOTICE: BEFORE UPDATE STATEMENT (test)
72
+ NOTICE: AFTER UPDATE STATEMENT (test)
73
+ update test_update_triggers.test set val = val + 1;
74
+ NOTICE: BEFORE UPDATE STATEMENT (test)
75
+ NOTICE: AFTER UPDATE STATEMENT (test)
76
+ update test_update_triggers.test set val = val + 1;
77
+ NOTICE: BEFORE UPDATE STATEMENT (test)
78
+ NOTICE: AFTER UPDATE STATEMENT (test)
79
+ update test_update_triggers.test set val = val + 1;
80
+ NOTICE: BEFORE UPDATE STATEMENT (test)
81
+ NOTICE: AFTER UPDATE STATEMENT (test)
82
+ update test_update_triggers.test set val = val + 1;
83
+ NOTICE: BEFORE UPDATE STATEMENT (test)
84
+ NOTICE: AFTER UPDATE STATEMENT (test)
85
+ select count(distinct val) from test_update_triggers.test;
86
+ count
87
+ -------
88
+ 200
89
+ (1 row)
90
+
91
+ truncate test_update_triggers.test;
92
+ /*
93
+ * Row level triggers
94
+ */
25
95
create trigger bu before update ON test_update_triggers.test_1
26
96
for each row execute procedure test_update_triggers.test_trigger ();
27
97
create trigger bd before delete ON test_update_triggers.test_1
@@ -46,56 +116,74 @@ create trigger ad after delete ON test_update_triggers.test_2
46
116
for each row execute procedure test_update_triggers.test_trigger ();
47
117
create trigger ai after insert ON test_update_triggers.test_2
48
118
for each row execute procedure test_update_triggers.test_trigger ();
119
+ /* single value */
49
120
insert into test_update_triggers.test values (1);
121
+ NOTICE: BEFORE INSERT STATEMENT (test)
50
122
NOTICE: BEFORE INSERT ROW (test_1)
51
123
NOTICE: AFTER INSERT ROW (test_1)
52
- set pg_pathman.enable_partitionrouter = t;
124
+ NOTICE: AFTER INSERT STATEMENT (test)
53
125
update test_update_triggers.test set val = val + 1 returning *, tableoid::regclass;
126
+ NOTICE: BEFORE UPDATE STATEMENT (test)
54
127
NOTICE: BEFORE UPDATE ROW (test_1)
55
128
NOTICE: AFTER UPDATE ROW (test_1)
129
+ NOTICE: AFTER UPDATE STATEMENT (test)
56
130
val | tableoid
57
131
-----+-----------------------------
58
132
2 | test_update_triggers.test_1
59
133
(1 row)
60
134
61
135
update test_update_triggers.test set val = val + 1 returning *, tableoid::regclass;
136
+ NOTICE: BEFORE UPDATE STATEMENT (test)
62
137
NOTICE: BEFORE UPDATE ROW (test_1)
63
138
NOTICE: BEFORE DELETE ROW (test_1)
64
139
NOTICE: BEFORE INSERT ROW (test_2)
65
140
NOTICE: AFTER DELETE ROW (test_1)
66
141
NOTICE: AFTER INSERT ROW (test_2)
142
+ NOTICE: AFTER UPDATE STATEMENT (test)
67
143
val | tableoid
68
144
-----+-----------------------------
69
145
3 | test_update_triggers.test_2
70
146
(1 row)
71
147
72
148
update test_update_triggers.test set val = val + 1 returning *, tableoid::regclass;
149
+ NOTICE: BEFORE UPDATE STATEMENT (test)
73
150
NOTICE: BEFORE UPDATE ROW (test_2)
74
151
NOTICE: AFTER UPDATE ROW (test_2)
152
+ NOTICE: AFTER UPDATE STATEMENT (test)
75
153
val | tableoid
76
154
-----+-----------------------------
77
155
4 | test_update_triggers.test_2
78
156
(1 row)
79
157
80
158
update test_update_triggers.test set val = val + 1 returning *, tableoid::regclass;
159
+ NOTICE: BEFORE UPDATE STATEMENT (test)
81
160
NOTICE: BEFORE UPDATE ROW (test_2)
82
161
NOTICE: BEFORE DELETE ROW (test_2)
83
162
NOTICE: BEFORE INSERT ROW (test_1)
84
163
NOTICE: AFTER DELETE ROW (test_2)
85
164
NOTICE: AFTER INSERT ROW (test_1)
165
+ NOTICE: AFTER UPDATE STATEMENT (test)
86
166
val | tableoid
87
167
-----+-----------------------------
88
168
5 | test_update_triggers.test_1
89
169
(1 row)
90
170
91
171
update test_update_triggers.test set val = val + 1 returning *, tableoid::regclass;
172
+ NOTICE: BEFORE UPDATE STATEMENT (test)
92
173
NOTICE: BEFORE UPDATE ROW (test_1)
93
174
NOTICE: AFTER UPDATE ROW (test_1)
175
+ NOTICE: AFTER UPDATE STATEMENT (test)
94
176
val | tableoid
95
177
-----+-----------------------------
96
178
6 | test_update_triggers.test_1
97
179
(1 row)
98
180
181
+ select count(distinct val) from test_update_triggers.test;
182
+ count
183
+ -------
184
+ 1
185
+ (1 row)
186
+
99
187
DROP SCHEMA test_update_triggers CASCADE;
100
188
NOTICE: drop cascades to 4 other objects
101
189
DROP EXTENSION pg_pathman CASCADE;
0 commit comments