CREATE TRIGGER - Creates a new trigger


SYNOPSIS

       CREATE TRIGGER name { BEFORE | AFTER } { event [OR ...] }
           ON table FOR EACH { ROW | STATEMENT }
           EXECUTE PROCEDURE func ( arguments )

   INPUTS
       name   The name of an existing trigger.

       table  The name of a table.

       event  One of INSERT, DELETE or UPDATE.

       func   A user-supplied function.

   OUTPUTS
       CREATE This message is returned if the trigger is success­
              fully created.


DESCRIPTION

       CREATE TRIGGER will enter a new trigger into  the  current
       data  base.  The trigger will be associated with the rela­
       tion table and will execute the specified function func.

       The trigger can be specified to fire either before  BEFORE
       the  operation is attempted on a tuple (before constraints
       are checked and the INSERT, UPDATE or DELETE is attempted)
       or  AFTER  the  operation  has been attempted (e.g., after
       constraints are checked and the INSERT, UPDATE  or  DELETE
       has completed). If the trigger fires before the event, the
       trigger may skip the operation for the current  tuple,  or
       change  the  tuple  being  inserted (for INSERT and UPDATE
       operations only). If the trigger fires  after  the  event,
       all  changes,  including  the  last  insertion, update, or
       deletion, are "visible" to the trigger.

       Refer to the chapters on SPI and  Triggers  in  the  Post­
       greSQL Programmer's Guide for more information.

   NOTES
       CREATE TRIGGER is a Postgres language extension.

       Only the relation owner may create a trigger on this rela­
       tion.

       As of the current release (v7.0), STATEMENT  triggers  are
       not implemented.

       triggers.


USAGE

       Check if the specified distributor code exists in the dis­
       tributors  table before appending or updating a row in the
       table films:

       CREATE TRIGGER if_dist_exists
           BEFORE INSERT OR UPDATE ON films FOR EACH ROW
           EXECUTE PROCEDURE check_primary_key ('did', 'distributors', 'did');

       Before cancelling a  distributor  or  updating  its  code,
       remove every reference to the table films:

       CREATE TRIGGER if_film_exists
           BEFORE DELETE OR UPDATE ON distributors FOR EACH ROW
           EXECUTE PROCEDURE check_foreign_key (1, 'CASCADE', 'did', 'films', 'did');


COMPATIBILITY

   SQL92
       There is no CREATE TRIGGER in SQL92.

       The  second example above may also be done by using a FOR­
       EIGN KEY constraint as in:

       CREATE TABLE distributors (
           did      DECIMAL(3),
           name     VARCHAR(40),
           CONSTRAINT if_film_exists
           FOREIGN KEY(did) REFERENCES films
           ON UPDATE CASCADE ON DELETE CASCADE
       );


Man(1) output converted with man2html