Rabu, 28 Januari 2009

Trigger SQL Server

Trigger SQL Server

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 :

1. Membuat isi dari kolom yang diambil dari kolom yang lain.

2. Membuat mekanisme validasi yang mencakup query pada banyak tabel.

3. Membuat log untuk mendaftarkan penggunaan tabel.

4. 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 :

1. 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.

2. Aksi yang dijalankan oleh trigger. Trigger menjalankan blok PL/SQL.

Batasan Trigger
Dibawah ini Adalah batasan dan pertimbangan di dalam menggunakan Trigger :
1. Trigger bias menjalankan perintah yang terkandung didalam badannya atau mengaktifkan prosedur dan trigger lain untuk menjalankan tugas tertentu
2. Setiap perintah SET bias di yentukan didalam trigger.Printah ini akan tetap aktif selama ekseksi
3. Kita tidak bias membuat trigger untuk view. Tetapi bila 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 dgn 2 cara yaitu:
1. Menggunakan Query analyzer
CREATE TRIGGER [TRIGGER NAME] ON [NAMA_TABLE]
FOR INSERT,UPDATE,DELETE
AS PERINTAH
Keterangan:
ON menunjukan table atau skema dimana trigger dibuat
FOR harus diikuti oleh jenis perintah yang akan dijalankan
AS Memulai badan trigger dgn perintah yang akan dijalankan
Berikut ini contoh pembuatan trigger semisalnya kita mempunyai tabel dengan nama tmhs dengan struktur sebagai berikut :

Gambar : struktur Table Tmhs

Buatlah table Tmhs2 yang mempunyai struktur yang sama dgn Tmhs

Misalkan kita akan membuat Trigger menampilkan tulisan saat program melakukan input






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

Gambar : menampilkan trigger

Gambar : Menuliskan Perintah 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.
Contoh:
Gambar : Menampilkan Data yang di edit

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 akan membuat Insert into dan select untuk mendapatkan field – field dari table 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