Download presentation
Presentation is loading. Please wait.
Published byZoe Boone Modified over 9 years ago
1
Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha Function, Trigger used in PosgreSQL
2
What are stored procedures A subroutine available to applications that access a relational database system. PL/pgSQL : A loadable procedural language. Creates functions and trigger procedures Adds control structures Performs complex computation Inherits all user-defined types, functions Can be defined to be trusted by the server Easy to use
3
Why do we need stored procedure One Query Wait, receive, process/compute Database Server Internet Reduce roundtrips across the network Can make security easier to manage Are precompiled
4
Structure of PL/pgSQL
5
Declarations (1) Declaring PL/pgSQL variable
6
Declarations (2) Declaring PL/pgSQL variable and assigning values
7
Declarations (3) Declaring Function Parameters (1) directly give a name to the parameter in the command (2) name ALIAS FOR $n;
8
Declarations (4) Directly using argument variables
9
Declarations (5) Attributes %TYPE attribute
10
Declarations (6) Attributes %ROWTYPE attribute
11
Comment syntax Single-line comments Block comments
12
Basic Statements (1) Assignment Executing a Command with NO RESULT – PERFORM
13
Basic Statements (2) Executing a Command with a Single-row result
14
Basic Statements (3) Example
15
Basic Statements (4)
16
Basic Statements (5) FOUND – Boolean variable
17
Control Structures(1) RETURN expression
18
Control Structures(2) IF statements IF … THEN IF … THEN … ELSE IF … THEN … ELSIF … THEN … ELSE
19
Control Structures(3) CASE statements CASE … WHEN … THEN … ELSE … END CASE CASE WHEN … THEN … ELSE … END CASE
20
Control Structures(4) LOOP EXIT
21
Control Structures(5) CONTINUE WHILE
22
Control Structures(6) FOR (Integer Variant)
23
Control Structures(7) FOR (Looping through query results)
24
Control Structures(8) Trapping Errors http://www.postgresql.org/docs/9.1/static/errcodes- appendix.html#ERRCODES-TABLE http://www.postgresql.org/docs/9.1/static/errcodes- appendix.html#ERRCODES-TABLE
25
Trigger(1) Triggers that are specified to fire INSTEAD OF the trigger event must be marked FOR EACH ROW, and can only be defined on views. BEFORE and AFTER triggers on a view must be marked as FOR EACH STATEMENT. before constraints are checked and the INSERT, UPDATE, or DELETE is attempted after constraints are checked and the INSERT, UPDATE, or DELETE has completed in the case of inserts, updates or deletes on a view
26
Trigger(2) Triggers that are specified to fire INSTEAD OF the trigger event must be marked FOR EACH ROW, and can only be defined on views. BEFORE and AFTER triggers on a view must be marked as FOR EACH STATEMENT.
27
Trigger(3) In row-level triggers the WHEN condition can examine the old and/or new values of columns of the row. Statement-level triggers can also have WHEN conditions, although the feature is not so useful for them since the condition cannot refer to any values in the table. SELECT does not modify any rows so you cannot create SELECT triggers. Rules and views are more appropriate in such cases.
28
Trigger(4) Execute the function check_account_update whenever a row of the table accounts is about to be updated: The same, but only execute the function if column balance is specified as a target in the UPDATE command: This form only executes the function if column balance has in fact changed value:
29
Trigger(5) Call a function to log updates of accounts, but only if something changed: Execute the function view_insert_row for each row to insert rows into the tables underlying a view:
30
Trigger(6) DROP TRIGGER removes an existing trigger definition.: ALTER TRIGGER changes properties of an existing trigger. The RENAME clause changes the name of the given trigger without otherwise changing the trigger definition.
31
Trigger(7) One built in trigger function, suppress_redundant_updates_trigger, which will prevent any update that does not actually change the data in the row from taking place, in contrast to the normal behaviour which always performs the update regardless of whether or not the data has changed. The suppress_redundant_updates_trigger function can be added to a table like this:
32
Cursors (1) Declaring Cursor Variables OPEN FOR query
33
Cursors (2) Using Cursors FETCH MOVE NEXT PRIOR FIRST LAST ABSOLUTE count RELATIVE count FORWARD BACKWORD
34
Cursors (3) Using Cursors CLOSE Returning Cursor
35
Cursors (4) Looping Through a Cursor’s Result
36
Errors and Messages RAISE Example
37
Reference PostgreSQL Manuals PostgreSQL 9.1 http://www.postgresql.org/docs/9.1/static/index.html Practical PostgreSQL http://www.faqs.org/docs/ppbook/c19610.htm
38
Stored Procedure in PgAdmin 1 2 3
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.