DB2 Version 9.7 for Linux, UNIX, and Windows

Creating triggers

A trigger defines a set of actions that are executed in conjunction with, or triggered by, an INSERT, UPDATE, or DELETE clause on a specified table or a typed table.

About this task

Use triggers to:

You can use triggers to support general forms of integrity or business rules. For example, a trigger can check a customer's credit limit before an order is accepted or update a summary data table.

Benefits:
  • Faster application development: Because a trigger is stored in the database, you do not have to code the actions that it performs in every application.
  • Easier maintenance: Once a trigger is defined, it is automatically invoked when the table that it is created on is accessed.
  • Global enforcement of business rules: If a business policy changes, you only need to change the trigger and not each application program.
Restrictions:
  • You cannot use triggers with nicknames.
  • If the trigger is a BEFORE trigger, the column name specified by the triggered action must not be a generated column other than an identity column. That is, the generated identity value is visible to BEFORE triggers.
When creating an atomic trigger, care must be taken with the end-of-statement character. The command line processor, by default, considers a ";" the end-of-statement marker. You should manually edit the end-of-statement character in your script to create the atomic trigger so that you are using a character other than ";". For example, the ";" could be replaced by another special character like "#". You can also precede the CREATE TRIGGER DDL with:
     --#SET TERMINATOR @ 
To change the terminator in the CLP on the fly, the following syntax will set it back:
    --#SET TERMINATOR
To create a trigger from the command line, enter:
   db2 -td <delimiter> -vf <script>
where the <delimiter> is the alternative end-of-statement character and the <script> is the modified script with the new <delimiter> in it.
To create a trigger from the command line, enter:
   CREATE TRIGGER <name>
      <action> ON <table_name>
      <operation>
      <triggered_action>
The following statement creates a trigger that increases the number of employees each time a new person is hired, by adding 1 to the number of employees (NBEMP) column in the COMPANY_STATS table each time a row is added to the EMPLOYEE table.
    CREATE TRIGGER NEW_HIRED
       AFTER INSERT ON EMPLOYEE
       FOR EACH ROW
       UPDATE COMPANY_STATS SET NBEMP = NBEMP+1;

A trigger body can include one or more of the following statements: INSERT, searched UPDATE, searched DELETE, fullselect, SET Variable, and SIGNAL SQLSTATE. The trigger can be activated before or after the INSERT, UPDATE, or DELETE statement to which it refers.