Selasa, 02 Februari 2010

Trigger

Pendahuluan Salah satu keistimewaan dari SQL Server adalah mekanisme kontrol yang bernama database Trigger. Trigger sama seperti sekumpulan perintah Transact-SQL yang secara otomatis dijalankan apabila ada perintah INSERT, DELETE, atau UPDATE yang dijalankan di dalam tabel. Aplikasi utama dari trigger adalah pembuatan metode validasi dan batasan akses ke dalam database, seperti misalnya perintah perintah keamanan. Ini merupakan cara lain selain dengan menggunakan aplikasi kita juga bisa melakukan kontrol langsung dengan menggunakan trigger yang diletakkan pada tabel yang bersangkutan. Perintah yang dapat dilakukan Trigger adalah : �� Membuat isi dari kolom yang diambil dari kolom yang lain. �� Membuat mekanisme validasi yang mencakup query pada banyak tabel. �� Membuat log untuk mendaftarkan penggunaan tabel. �� Meng-update tabel tabel lain apabila ada penambahan atau perubahan lain di dalam tabel yang sedang aktif. Komponen dari Trigger Trigger dibentuk dari dua bagian : �� Perintah SQL untuk mengaktifkan trigger. Perintah INSERT, DELETE dan UPDATE bisa mengaktifkan trigger. Trigger yang sama bisa diaktifkan apabila ada lebih dari satu aksi yang terjadi. Dengan kata lain trigger bisa diaktifkan apabila ada perintah insert, delete atau update dijalankan. �� Aksi yang dijalankan oleh trigger. Trigger menjalankan blok PL/SQL.


Dibawah ini adalah batasan dan pertimbangan di dalam menggunakan trigger :
1. Trigger bisa menjalankan perintah yang terkandung di dalam badannya atau mengaktifkan prosedur dan trigger lain untuk menjalankan tugas tertentu.
2. Setiap perintah SET bisa ditentukan di dalam trigger. Perintah ini akan tetap aktif selama ekseksi. 3. Kita tidak bisa membuat trigger untuk view. Tetapi apabila view digunakan, trigger dari table dasar biasanya akan diaktifkan. 4. Perintah Truncate Table tidak bisa dihentikan oleh trigger. 5. Trigger tidak bisa menjalankan perintah Transact-SQL yang merupakan perintah DDL.
Membuat Trigger Trigger bisa dibuat dengan 2 cara yaitu : 1. Menggunakan Query analizer CREATE TRIGGER [TRIGGER NAME] ON [NAMA_TABEL] FOR INSERT, UPDATE, DELETE AS PERINTAH Ket : ON menunjukan tabel atau skema dimana trigger dibuat. FOR harus diikuti oleh jenis perintah yang akan dijalankan. AS memulai badan trigger dengan perintah yang akan dijalankan.
Berikut ini contoh pembuatan trigger semisalnya kita mempunyai tabel dengan nama tmhs dengan struktur sebagai berikut :
contoh tabel


Buatlah tabel TMhs2 yang mempunyai struktur yang sama dengan TMhs. Misalkan kita akan membuat trigger menampilkan tulisan saat program melakukan input


2.Menggunakan Enterprise Manager Dengan menggunakan Enterprise manager pembuatan Trigger sangatlah mudah. Berikut ini cara membuat trigger menampilkan tulisan pada saat melakukan input :




Gambar : Menampilkan Trigger




Tabel Inserted dan Deleted Apabila tabel dijalankan SQL server akan membuat dua buah tabel sementara yang hanya muncul apabila trigger sedang dijalankan, tabel yang pertama adalah tabel inserted dan yang kedua adalah tabel deleted. Apabila perintah INSERT atau UPDATE dijalankan, record yang dibuat atau diubah di copy ke dalam tabel inserted. Apabila perintah DELETE dijalankan, baris baris yang dihapus di copy ke dalam tabel deleted.




Membuat Replikasi Baris dengan Trigger Dengan menggunakan tabel sementara dari trigger, kita bisa membuat sebuah mekanisme untuk melakukan replikasi cepat dari satu tabel ke tabel yang lainnya. Kita bisa menyisipkan, mengubah atau menghapus record pada tabel lain pada saat operasi sedang dilakukan pada tabel yang sedang aktif. Berikut ini contoh membuat tiga buah trigger untuk replikasi atau menggandakan operasi dari tabel Tmhs ke dalam tabel Tmhs2. Replikasi Insert Nama trigger : insertrep Create Trigger insertrep on tmhs For insert As Insert into Tmhs2 Select * from inserted
Pada trigger ini, kita menggunakan Insert into dan select untuk mendapatkan field field dari tabel inserted Replikasi Delete Nama trigger : delrep Create Trigger delrep on Tmhs For Delete As Delete from tmhs2 Where tmhs2.nim in (select nim from deleted) Kita menggunakan perintah Delete From dan Where untuk menyaring record yang akan dihapus dengan mencarinya pada tabel deleted, yang dalam hal ini hanya mengandung record yang baru saja dihapus Replikasi Update Nama trigger : uprep Create Trigger uprep on Tmhs For Update As Update Tmhs2 Set Nama=(Select Nama from Inserted), Alamat=(Select Alamat from Inserted) Where Tmhs2.nim in (Select nim from Inserted) Trigger ini mereplikasi proses update yang telah dilakukan pada tmhs, didalamnya mengupdate colom nama dan alamat dari Tmhs2 dengan isi dari colom nama dan alamat dari tabel inserted. Klause Where juga digunakan untuk mengupdate record yang kodenya ditemukan pada tabel inserted saja. Pada perintah replikasi update dan juga update biasa sangat dilarang untuk mengupdate primary key.

Tidak ada komentar:

Posting Komentar