Membuat Trigger BeforeUpdate

Artikel terakhir mengenai trigger dibuat untuk after insert data. Membuat triggernya sangat mudah karena tidak memerlukan validasi apapun. Berikut adalah contoh bagaimana membuat sebuah trigger before update, yang mengharuskan adanya validasi tertentu.

Misalnya ada sebuah tabel bernama course dengan field sebagai berikut
- courseName varchar (20)
- courseType char (1)
Buatlah sebuah trigger before update yang memvalidate courseType hanya bernilai ‘U’ dan ‘P’

Berikut adalah syntax createnya
CONNECT TO SAMPLE;
CREATE TABLE PRK.COURSE (COURSENAME VARCHAR (50) NOT NULL, COURSETYPE CHARACTER (1) NOT NULL );
CONNECT RESET;

Berikut adalah syntax TRIGGERnya
CREATE TRIGGER DENY.VALIDATECOURSETYPE NO CASCADE BEFORE UPDATE OF COURSETYPE ON DENY.COURSE REFERENCING OLD AS old NEW AS new FOR EACH ROW MODE DB2SQL
WHEN (new.courseType != ‘U’ or new.courseType != ‘P’ )
BEGIN ATOMIC
SIGNAL SQLSTATE ’70001′ (‘Invalid’);
END

Kemudian kita insert ke table
insert into deny.course values (‘name1′,’U')
insert into deny.course values (‘name2′,’P')
insert into deny.course values (‘name3′,’P')

Kemudian kita update record tertentu
update deny.course set courseType = ‘A’ where courseType = ‘P’

Maka akan menghasilkan error sebagai berikut
update deny.course set courseType = ‘A’ where courseType = ‘P’
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0438N Application raised error with diagnostic text: “Invalid”.
SQLSTATE=70001

Berikut adalah screenshot hasilnya
Free Image Hosting at www.ImageShack.us

Semoga bermanfaat.

Best regards,

Deny Sutani

This entry was posted in DB2 and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>