TRIGGER DELETE SEDERHANA
Trigger dalam SQL Server berguna untuk menjaga validitas data dari adanya redudansi, terutama bila data tersebut
merupakan data yang berelasi dengan tabel-tabel lain yang ada di database.
di sini gue punya dua buah tabel yaitu tabel mDataSiswa dan tabel trPembayaran, dimana tabel mDataSiswa adalah
tabel master Siswa dan trPembayaran adalah tabel pembayaran SPP dari tiap siswa, so pasti primary key (NIS) di tabel
mDataSiswa harus ada di tabel trPembayaran sebagai foreign key.
untuk membuat trigger bisa melalui Enterprise Manager atau SQL Query Analyzer
contoh pembuatan triggernya adalah sbb:
CREATE TRIGGER tr_deleteSiswa ON mDataSiswa
FOR DELETE AS
DECLARE @NIS_bayar VARCHAR(10)
SELECT @NIS_bayar = NIS FROM Deleted
DELETE FROM trPembayaran WHERE NIS_bayar=@NIS_bayar
Menjalankannya cukup dengan perintah SQL : DELETE FROM mDataSiswa Where NIS=’1023416′
maka dari perintah di atas selain menghapus data Siswa dengan NIS=1023416 di tabel mDataSiswa juga akan menghapus
pembayaran SPP di trPembayaran dengan NIS_bayar=1023416
Keterangan Script:
1. baris pertama menerangkan pembuatan trigger dengan nama tr_deleteSiswa di tabel mDataSiswa
2. baris kedua memerintahkan trigger untuk melakukan Delete (ada 2 perintah yaitu INSERT,DELETE,UPDATE)
3. baris ketiga yaitu deklarasi variable ciptaan sendiri yang baiknya di samakan dengan nama field di tabel asal
4. baris keempat memasukkan nilai NIS ke variable ciptaan yang asalnya dari tabel Deleted (tabel deleted sendiri adalah
logical tabel yang tercipta saat trigger di jalankan, selain itu ada tabel Inserted bila perintah yang di Pakai adalah
INSERT atau UPDATE)
5. baris kelima adalah penghapusan record di tabel trPembayaran berdasarkan Nilai NIS yang ada di tabel Deleted
contoh triger update
================
CREATE TRIGGER UPDATED_ART01A ON dbo.ART01A FOR UPDATE
AS
IF NOT UPDATE(Faktur) RETURN
DECLARE @Faktur VARCHAR(10)
SELECT @Faktur = Faktur FROM INSERTED
UPDATE ART01B SET ART01B.Faktur = @Faktur FROM ART01B,DELETED
WHERE ART01B.Faktur = DELETED.Faktur
contoh triger validate insert
===================
CREATE TRIGGER [INSERT_ART03B_A] On dbo.ART03B FOR INSERT
AS
If Not Exists(SELECT BUKTI FROM ART03A WHERE
ART03A.BUKTI = (SELECT BUKTI FROM INSERTED))
Begin
Raiserror(‘You cannot add or change a record because a related record is required in table ART03A’, 16, 10)
Rollback Transaction
End