Thursday, January 20, 2011

Trigger

TRIGGER

Definisi Trigger
Trigger adalah batch/sekumpulan perintah yang secara otomatis dikerjakan ketika terjadi penyisipan (insert), pengubahan (update) atau penghapusan data (delete) pada sebuah tabel.
Sintaks penulisan :
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ delete ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
Latihan :
1. Buat DBTrigger
2. Buat Tabel TBNilai dengan struktur berikut :

3. Buat Trigger Insert trgInsert_Nilai
Contoh Trigger Insert pada table TBNilai :
Ketika kita mengisi data baru dengan memasukkan nilai UTS atau UAS pada tabel bernama TBNilai, maka secara otomatis NAkhir dihitung ulang dengan rumus = 40% UTS + 60 % UAS
CREATE trigger [dbo].[trgINSERT_Nilai] on [dbo].[TBNILAI]
for INSERT
as
declare @v1 as char(3)
declare @v2 as char(3)
select @v1=KdMK,@v2=NIM from inserted
update tbNilai
set NAkhir=CONVERT(INT, 0.4*UTS + 0.6*UAS)
where KdMK=@v1 and NIM=@v2
return
4. Lakukan insert pada table tersebut sbb, NAkhir jangan diisi krn akan diupdate otomatis oleh Trigger.


5. Buat Trigger Update pada TBNilai dengan contoh berikut :
Ketika kolom UTS atau UAS pada tabel bernama TBNilai dilakukan perubahan, maka secara otomatis NAkhirnya dihitung ulang dengan rumus = 40% UTS + 60 % UAS

CREATE trigger trgNilai on TBNilai for update
as
declare @v1 as char(3)
declare @v2 as char(3)
select @v1=KdMK,@v2=NIM from inserted
if update(UTS) or update(UAS) begin
update TBNilai
set NAkhir=0.4*UTS + 0.6*UAS
where KdMK=@v1 and NIM=@v2
end
return

6. Untuk menguji TrgNilai tadi (Trigger untuk update pada TBNILAI), buatlah sintaks SQL berikut :



Pembahasan di atas, kita telah melakukan percobaan dengan membuat Trigger untuk Insert dan Update. Kedua trigger dibuat pada table TBNilai. Trigger tersebut akan mengupdate NAkhir pada tabel yang sama (dirinya sendiri), seperti tampak pada ilustrasi berikut :








TRIGGER UNTUK MENCATAT PERUBAHAN

LATIHAN :
1. Buat table TBPegawai sbb :



2. Buat tabel TBLog sbb :




3. Buat Trigger Insert pada TBPegawai sbb :


4. Pengujian TRInsert_Pegawai


5. Buat Trigger untuk Update pada TBPegawai sbb :







6. Buat Trigger untuk Delete pada TBPegawai :

7.

2 comments: