1
1
<!--
2
- $Header: /cvsroot/pgsql/doc/src/sgml/ref/create_rule.sgml,v 1.11 2000/04/07 17:23:11 momjian Exp $
2
+ $Header: /cvsroot/pgsql/doc/src/sgml/ref/create_rule.sgml,v 1.12 2000/04/07 17:35:08 momjian Exp $
3
3
Postgres documentation
4
4
-->
5
5
@@ -171,12 +171,14 @@ CREATE
171
171
two rules have the same semantics:
172
172
<programlisting>
173
173
ON UPDATE TO emp.salary WHERE emp.name = "Joe"
174
- DO UPDATE emp ( ... ) WHERE ...
174
+ DO
175
+ UPDATE emp ( ... ) WHERE ...
175
176
</programlisting>
176
177
177
178
<programlisting>
178
179
ON UPDATE TO emp-1.salary WHERE emp-2.name = "Joe"
179
- DO UPDATE emp-3 ( ... ) WHERE ...
180
+ DO
181
+ UPDATE emp-3 ( ... ) WHERE ...
180
182
</programlisting>
181
183
182
184
Each rule can have the optional tag INSTEAD.
@@ -203,13 +205,15 @@ ON UPDATE TO emp-1.salary WHERE emp-2.name = "Joe"
203
205
<programlisting>
204
206
CREATE RULE bad_rule_combination_1 AS
205
207
ON SELECT TO emp
206
- DO INSTEAD SELECT TO toyemp;
208
+ DO INSTEAD
209
+ SELECT TO toyemp;
207
210
</programlisting>
208
211
209
212
<programlisting>
210
213
CREATE RULE bad_rule_combination_2 AS
211
214
ON SELECT TO toyemp
212
- DO INSTEAD SELECT TO emp;
215
+ DO INSTEAD
216
+ SELECT TO emp;
213
217
</programlisting>
214
218
<para>
215
219
This attempt to retrieve from EMP will cause
@@ -257,8 +261,10 @@ SELECT * FROM emp;
257
261
<programlisting>
258
262
CREATE RULE example_1 AS
259
263
ON UPDATE emp.salary WHERE current.name = "Joe"
260
- DO UPDATE emp (salary = new.salary)
261
- WHERE emp.name = "Sam";
264
+ DO
265
+ UPDATE emp
266
+ SET salary = new.salary
267
+ WHERE emp.name = "Sam";
262
268
</programlisting>
263
269
264
270
At the time Joe receives a salary adjustment, the event
@@ -275,8 +281,9 @@ CREATE RULE example_2 AS
275
281
ON SELECT TO EMP.salary
276
282
WHERE current.name = "Bill"
277
283
DO INSTEAD
278
- SELECT (emp.salary) from emp
279
- WHERE emp.name = "Joe";
284
+ SELECT emp.salary
285
+ FROM emp
286
+ WHERE emp.name = "Joe";
280
287
</programlisting>
281
288
</para>
282
289
<para>
@@ -285,8 +292,9 @@ CREATE RULE example_2 AS
285
292
the current user):
286
293
<programlisting>
287
294
CREATE RULE example_3 AS
288
- ON SELECT TO emp.salary
289
- WHERE current.dept = "shoe" AND current_user = "Joe"
295
+ ON
296
+ SELECT TO emp.salary
297
+ WHERE current.dept = "shoe" AND current_user = "Joe"
290
298
DO INSTEAD NOTHING;
291
299
</programlisting>
292
300
</para>
@@ -298,7 +306,8 @@ CREATE toyemp(name = char16, salary = int4);
298
306
CREATE RULE example_4 AS
299
307
ON SELECT TO toyemp
300
308
DO INSTEAD
301
- SELECT (emp.name, emp.salary) FROM emp
309
+ SELECT (emp.name, emp.salary)
310
+ FROM emp
302
311
WHERE emp.dept = "toy";
303
312
</programlisting>
304
313
</para>
@@ -307,7 +316,8 @@ CREATE RULE example_4 AS
307
316
<programlisting>
308
317
CREATE RULE example_5 AS
309
318
ON INERT TO emp WHERE new.salary > 5000
310
- DO UPDATE NEWSET salary = 5000;
319
+ DO
320
+ UPDATE NEWSET salary = 5000;
311
321
</programlisting>
312
322
</para>
313
323
</refsect1>
0 commit comments