Sunday, 25 May 2014

How to create a simple trigger on DB2

How to create a simple trigger on DB2

a little example how to create a simple trigger on DB2

See the example below, how to create a trigger, and check how it works.

db2 "create table table_1 (cod int)"
db2 "create table table_2 (cod2 int)"
db2 "create trigger trig1 after insert on table_1 for each row update table_2  set cod2 = cod2 +1  where cod2 > 0"
db2 "insert into table_2 values (1)"
db2 "insert into table_2 values (2)"
db2 "insert into table_2 values (3)"
db2 "insert into table_2 values (4)"
db2 "insert into table_2 values (5)"
db2 "insert into table_2 values (5)"
 db2 "select * from table_2"
Output:

COD2      
-----------
          1
          2
          3
          4
          5
          6

  6 record(s) selected.

db2 "insert into table_1 values (1)"

 db2 "select * from table_2"
Output:

COD2      
-----------
          2
          3
          4
          5
          6
          7
  6 record(s) selected.
If the table_1 is 10 values, example:

 db2 "select * from table_1"

COD      
-----------

          1
          2
          3
          4
          5
          6
          7
          8
          9
         10

  10  record(s) selected.

and the values of table_2 is:


 db2 "select * from table_2"

COD2      
-----------

          1
          2
          3
          4
          5
          6  
     6  record(s) selected.

db2 "insert into table table_1 (select * from table_1 )

After the statement above, we have:

 db2 "select * from table_2"

COD2      
-----------
          11
          12
          13
          14
          15
          16  

       6  record(s) selected.


If you are using the clause "for each statement" instead of "for each row", you will have the results below:


COD2      
-----------
          2
          3
          4
          5
          6
          7  

       6  record(s) selected.

This trigger will be:

db2 "create trigger trig1 after insert on table_1 for each statement update table_2  set cod2 = cod2 +1  where cod2 > 0"

No comments:

Post a Comment