Trigger memakai dua tabel maya yaitu Inserted dan Deleted
untuk mendeteksi modifikasi data. Untuk memprogram Trigger, Anda harus
mendalami kedua tabel tersebut dan bahasa Transact-SQL. Untuk menjaga
integritas data, Anda dapat memakai beberapa alternatif, yaitu Trigger
atau Konstrain (Rule). Anda juga dapat memakai kunci utama dan kunci
unik untuk mengidentifikasi baris dalam sebuah tabel secara unik. Anda
juga dapat memakai nilai default dan domain untuk membatasi nilai-nilai
yang diperbolehkan pada sebuah kolom. Referential Integrity dipakai
untuk menjamin keabsahan hubungan antar tabel. Sebaliknya Anda memakai
konstrain-konstrain tersebut sebelum memilih Trigger, karena Trigger
dapat melakukan proses yang lebih rumit tetapi beban sistem lebih berat.
Pakailah Trigger untuk kasus-kasus berikut:
- Jika pemakaian cara deklaratif tidak dapat memenuhi kebutuhan yang diperlukan. Misalnya, buatlah Trigger untuk mengubah sebuah nilai numerik dalam tabel jika sebuah record di dalam tabel tersebut dihapus.
- Sebuah perubahan harus mengubah tabel-tabel lain yang terhubung. Misalnya jika data order ditambahkan, tabel lain yang menyimpan data stok akan berubah.
- Jika database didenormalisasi dan memerlukan cara otomasi untuk mengubah data redundan yang ada dibeberapa tabel.
- Jika sebuah nilai pada sebuah tabel harus divalidasi dengan data pada tabel lain.
- Jika diperlukan pesan kesalahan dan penangganan kesalahan secara khusus.
Kemampuan-kemampuan yang dimiliki Trigger:
- Trigger dapat menjaga referential integrity dengan melakukan perubahan data atau penghapusan kunci tamu (Foreign Key) di dalam database.
- Trigger dapat bekerja pada beberapa kolom dalam sebuah database bahkan pada objek di luar database. Anda juga dapat memakai Trigger pada View.
- Sebuah Trigger dapat melakukan beberapa aksi dan Trigger dapat diaktifkan oleh beberapa event. Misalnya Anda membuat sebuah Trigger yang akan diaktifkan jika terjadi proses INSERT, UPDATE atau DELETE. Dengan perintah Transact-SQL, Anda dapat mendefinisikan aturan bisnis untuk tiap event.
Selain kemampuan-kemampuan tersebut, Trigger juga
mempunyai keterbatasan. Trigger tidak dapat dibuat pada sebuah tabel
sistem atau temporer, meskipun perintah di dalama Trigger mengacu ke
tabel sistem atau tabel temporer.
Trigger tidak dapat diaktifkan secara manual, tetapi diaktifkan secara otomatis jika terjadi event INSERT, UPDATE, dan DELETE. Dalam Trigger selalu berisi satu atau beberapa event tersebut sebelum perintah Transact-SQL didefinisikan. Tipe-tipe Trigger sesuai dengan event-nya. Misalnya Anda membuat sebuah Trigger UPDATE sehingga jika terjadi pengubahan data pada sebuah tabel, Trigger tersebut dapat diaktifkan. Sebuah Trigger dapat diaktifkan oleh beberapa event.
Trigger tidak dapat diaktifkan secara manual, tetapi diaktifkan secara otomatis jika terjadi event INSERT, UPDATE, dan DELETE. Dalam Trigger selalu berisi satu atau beberapa event tersebut sebelum perintah Transact-SQL didefinisikan. Tipe-tipe Trigger sesuai dengan event-nya. Misalnya Anda membuat sebuah Trigger UPDATE sehingga jika terjadi pengubahan data pada sebuah tabel, Trigger tersebut dapat diaktifkan. Sebuah Trigger dapat diaktifkan oleh beberapa event.
Pada saat terjadi INSERT atau UPDATE yang diaktifkan
Trigger, Trigger menyimpan data baru atau data hasil modifikasi di dalam
sebuah tabel yang bernama INSERTED. Jika terjadi DELETE yang
mengaktifkan Trigger, data yang dihapus akan tersimpan ditabel yang
bernama Deleted. Tabel tersebut berada dimemori dan dibaca oleh Trigger
dengan perintah-perintah Transact-SQL. Kemampuan ini penting anda
ketahui, karena pada umumnya Trigger membandingkan data dalam tabel
Inserted dan Deleted dengan data baru sebelum proses Commit. Dengan
kedua tabel tersebut, Trigger dapat melakukan proses Roll-Back.
Tidak ada komentar:
Posting Komentar