190 likes | 233 Views
Learn about the importance of triggers and constraints in SQL databases, including how to write trigger programs and apply constraints effectively. Explore examples and best practices for optimizing database operations.
E N D
Constraints Review
What is a constraint? • Unique – forbids duplicate values • Referencial – Foreign key • Check Constraint – sets restrictions on data added to a specific table
Trigger? • A condition that causes some procedure to be executed. • On the Iseries, a program that is called when a program tries to insert, update or delete a database record • A trigger can be more complex than a check constraint
Writing Trigger Programs • Just as you do any HLL program • AddPFTrg (Add Physical File Trigger) to associate the program with the database file.
6 Trigger Conditions • Before Insert • Before Update • Before Delete • After Insert • After Update • After Delete
Advantages • Be sure that the actions coded in the trigger program are executed irregardless of the application that is trying to modify the database
Disadvantages • You must be aware that triggers exist
RmvPfTrg • Removes a trigger program from a database
Coding a Trigger Program • Can be coded in any iSeries HLL • Must have 2 parameters that conform to IBM-defined interface for trigger programs • Trigger buffer • Before and after image of the affected row • See Fig 16.1 in text book • Trigger length • Length of the buffer
Trigger Program • Trigger Programs must cause an exception message. • Best way to do this is to send a program message to the calling program. • This causes the application to crash and the database update is halted.
Vendor Master CREATE TABLE VENDOR (VENID DEC (7 , 0) NOT NULL WITH DEFAULT, NAME CHAR (30 ) NOT NULL WITH DEFAULT, MINORD DEC (7 , 0) NOT NULL WITH DEFAULT, CONSTRAINT VENDORPK PRIMARY KEY (VENID))
Write a Trigger Program • Minimum order must be greater than 100.00
Student Master CREATE TABLE STUDENT (STUDID NUMERIC (9 , 0), SNAME CHAR (30 ), PROV CHAR (15), ACTBAL NUMERIC(11, 2))
Write a trigger program that will not allow records to be updated where the PROV = ON and the ACTBAL < 100