RDOHELP72.HLB  —  DEFINE_TRIGGER, More
    To define a trigger, you need the Oracle Rdb READ and DEFINE
    privileges to the subject relation. If any triggered statement
    specifies some form of update operation, then CONTROL and the
    appropriate update privilege (ERASE, MODIFY, or WRITE) to the
    relations specified by the triggered action statements are also
    required.

    Each trigger is associated with a single subject relation, will
    be evaluated at a specific time for a particular type of update
    on that relation, and specifies a series of 'triggered' actions.
    Each triggered action consists of an optional condition and one
    or more statements to be evaluated either once only or for each
    record of the relation being updated.

    By defining combinations of relation-specific constraints and
    triggers, you can help to preserve integrity for a database.
    However, the relation-specific constraints and triggers that you
    define only preserve data integrity for the fields and relations
    specified in the constraints and triggers, not for the entire
    database.

    You can define a trigger only after you have invoked the
    database. See the DEFINE_RELATION statement.

    You must execute this statement in a read/write transaction.
    If there is no active transaction and you issue this statement,
    Oracle Rdb starts a read/write transaction implicitly.

    Other users are allowed to be attached to the database when you
    issue the DEFINE TRIGGER statement.

    Triggers that update rows of the trigger subject relation or add
    rows to the trigger subject relation can cause infinite loops
    or inconsistent results to be returned, as in the following two
    conditions:

    o  A BEFORE MODIFY trigger on relation X that inserts a row into
       relation X

    o  A MODIFY statement affecting all the rows in relation X

    Considering these two conditions, the MODIFY statement will loop
    until all resources are consumed because for each row updated,
    a new row will be added, which in turn will be updated, and so
    forth.

    When subject relation rows are being retrieved using an index,
    there is the possibility that a triggered action operating on
    the same relation could affect the index (by changing index key
    values or adding new keys) such that the triggering statement
    behaves in a different manner than when there is no trigger
    involved.

    Currently, only avoidance methods can be suggested for this
    problem. The best way to avoid this problem is to construct
    any such triggers to operate only on rows that are either the
    current subject relation row, or that will never be selected by
    the triggering statement. A more difficult avoidance method is
    to restructure triggering statements such that they could never
    select a row that could have been updated or added by a trigger
    action. Some circumstances will require a combination of these
    methods.
Close Help