Anda di halaman 1dari 3

Modul Praktikum Pemrograman berbasis client server @2012 Disusun oleh : Wiwi Widayani

CREATE TRIGGER Tujuan Diharapkan mahasiswa mampu : Menjelaskan konsep dan menguasai implementasi Trigger dalam database Menjelaskan konsep dan menguasai implementasi Cursor dalam database

TRIGGER Trigger adalah prosedur yang secara otomatis dijalankan sebagai respon terhadap perubahan yang telah dilakukan pada database, dan biasanya ditentukan oleh DBA. Sebuah database memiliki sekumpulan trigger yang telah digabung disebut active database. Deskripsi trigger terdiri dari tiga bagian : Event : Perubahan database yang mengaktifkan trigger Condition : Query atau tes yang berjalan ketika tigger sedang diaktifkan Action : Sebuah procedure yang dieksekusi ketika trigger diaktifkan dan persyaratannya bernilai benar. Trigger dapat dianggap sebagai daemon yang memonitor database, dan dieksekusi ketika database dimodifikasi dengan suatu cara yang sesuai dengan spesifikasi event. Pernyataan insert, delete atau update dapat mengaktifkan trigger, tanpa mempertimbangkan pengguna mana atau aplikasi mana yang meminta pernyataan pengaktifan. Pengguna bahkan mungkin tidak sadar bahwa trigger telah dieksekusi sebagai efek samping dari program mereka. Condition pada trigger dapat merupakan pernyataan true/false atau sebuah query. Query diinterpretasikan sebagai true jika set jawaban tidak kosong dan false jika query tidak memiliki jawaban. Jika bagian persyaratan mengevaluasi true, maka tindakan yang berhubungan dengan trigger dieksekusi. Sintaks dasar untuk pembuatan Trigger : CREATE TRIGGER nama_trigger ON table | view FOR INSERT | UPDATE | DELETE AS statement_sql [ ...n ] Deskripsi Nama_trigger Adalah nama trigger. Nama triger harus mengikuti aturan identifier dan harus unik harus unik di dalam satu database. Table Tabel adalah tempat dimana trigger tersebut berapa dan dieksekusi. AS Adalah Aksi yang diaktifkan oleh trigger tersebut. Statement_sql Adalah kondisi dan aksi perintah SQL yang ada saat Trigger itu dijalankan. n Variabel yang menyatakan bahwa anda bisa menyertakan banyak pernyataan Transact-SQL.

Modul Praktikum Pemrograman berbasis client server @2012 Disusun oleh : Wiwi Widayani

Langkah langkah praktikum : 1. Buka Query Analyzer Koneksi ke komputer server kelompok aktifkan database yang pernah dibuat 2. Membuat Trigger untuk merubah stok barang ketika barang tersebut terjual
CREATE TRIGGER TGInsertDetailKurangiStok ON DetailTransaksi FOR INSERT AS DECLARE @Kode char(6),@byk int BEGIN TRANSACTION SELECT @kode=kodebarang,@byk=banyak FROM inserted UPDATE barang SET stok=stok-@byk WHERE kodebarang=@kode IF @@error=0 COMMIT TRANSACTION ELSE ROLLBACK TRANSACTION

Untuk melihat apakah trigger berjalan dengan baik dan benar, eksekusi event yang memicu trigger tersebut! INSERT INTO detailTransaksi VALUES ( 3. (#)Buat trigger untuk update stok barang ketika terjadi pembatalan/penghapusan detail transaksi 4. (%)Buat trigger untuk update stok barang ketika terjadi perubahan detail transaksi 5. (&)Buat Trigger untuk mengubah point ketika terjadi penambahan data detail transaksi, dengan ketentuan 1 point untuk kelipatan total belanja 20000 6. ($)Buat Trigger untuk mengubah point ketika terjadi penghapusan data detail transaksi

CURSOR Cursor merupakan suatu mekanisme yang memungkinkan untuk mendapatkan baris, satu per satu dari relasi. Cursor dapat dideklarasikan pada semua relasi atau semua query SQL (karena setiap query mengembalikan kumpulan baris). Sekali cursor dideklarasikan, kita dapat open (membuka) posisi cursor tepat sebelum baris pertama; fetch (mengambil) baris berikutnya; move (memindahkan) cursor ke baris berikutnya, ke baris setelah baris ke n berikutnya, ke baris pertama atau ke baris sebelumnya, dsb; atau close (menutup) cursor. Jadi cursor pada dasarnya memungkinkan untuk mendapatkan nilai baris dalam tabel dengan menempatkan cursor pada baris tertentu dan membaca isinya. Sintaks dasar untuk pembuatan Cursor :
DECLARE nama_cursor [INSENSITIVE][SCROLL]CURSOR FOR statement_select [FOR READONLY | FOR UPDATE]

Deskripsi Nama_cursor

Adalah nama variabel cursor yang didefinisikan.

Statement_sql Adalah perintah dasar SELECT yang hasilnya akan diset sebagai cursor. Contoh :
declare @kode char(6) declare @nama varchar(50) declare @stok int declare CurBarang cursor for select kodebarang,namabarang,stok from Barang

Modul Praktikum Pemrograman berbasis client server @2012 Disusun oleh : Wiwi Widayani

open CurBarang fetch next from CurBarang into @kode, @nama, @stok while @@fetch_status=0 begin print @kode + ' - ' + @nama + ' - ' + cast(@stok as varchar(5)) fetch next from CurBarang into @kode, @nama, @stok end close CurBarang deallocate CurBarang declare @kodebarang char(6) declare @nama varchar(50) DECLARE ScrollCursorBarang SCROLL CURSOR FOR SELECT kodebarang, namabarang FROM barang OPEN ScrollCursorBarang FETCH LAST FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama FETCH PRIOR FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama FETCH ABSOLUTE 2 FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama FETCH RELATIVE -3 FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama FETCH RELATIVE 4 FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama FETCH first FROM ScrollCursorBarang into @kodebarang,@nama print @kodebarang + ' --> '+ @nama CLOSE ScrollCursorBarang DEALLOCATE ScrollCursorBarang

Ketika sebuah perintah update atau delete berakibat terupdatenya atau terhapusnya banyak baris, maka trigger hanya berakibat di 1 baris saja oleh sebab itu perlu ditambahkan variable cursor untuk mengambil semua baris-baris data yang sedang terupdate atau terhapus Contoh :
delete from detailtransaksi where nonota='1110110001'

perhatikan perubahan data ditabel barang kemudian modifikasi trigger yang dipicu oleh event delete di tabel detailtransaksi agar bisa menanggulangi masalah tersebut

Anda mungkin juga menyukai