Anda di halaman 1dari 12

Tri Astuti, S.Kom., M.Eng.

TRIGGER
OUTLINE

 Definisi
 After Trigger
 Instead Trigger
DEFINISI

 Trigger adalah blok T-SQL yang disimpan dalam database dan akan diaktivasi ketika kita melakukan
statement-statement SQL baik DELETE, UPDATE atau INSERT pada sebuah tabel.
 Aktivasi trigger didasarkan pada event yang terjadi di dalam tabel tersebut sehingga trigger dapat
membantu menjaga integritas dan konsistensi data.
 Contoh implementasi trigger adalah untuk mengeset/mengubah nilai kolom dalam suatu tabel
sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger di dalam database akan
meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat tidak perlu lagi
untuk melakukan validasi data.
 Jenis
1. DDL Trigger
2. DML Trigger
3. LOGON Trigger
TRIGGER DALAM BASIS DATA
KOMPONEN TRIGGER

 Trigger timing adalah waktu kapan trigger diaktifkan. Ada dua macam trigger timing, yaitu:
1. AFTER : trigger dijalankan setelah DML event pada tabel
2. INSTEAD OF : trigger dijalankan dengan cara melewatkan DML event pada tabel
 Trigger Event ada tiga kemungkinan: INSERT, UPDATE atau DELETE
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi
kolom mana yang berubah untuk mengaktifkan sebuah trigger. Jika tidak ditentukan, maka
perubahannya akan berlaku untuk semua kolom pada semua baris.
 Nama Tabel: nama tabel atau view yang berhubungan dengan trigger
 Statement Trigger : mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event
yang mengakibatkan sebuah trigger menjadi aktif
EVENT TRIGGER

 AFTER INSERT : Diaktifkan sekali setelah statement INSERT


 AFTER UPDATE : Diaktifkan sekali setelah statement UPDATE
 AFTER DELETE : Diaktifkan sekali setelah statement DELETE
 INSTEAD OF INSERT : Diaktifkan sekali dengan melewatkan statement INSERT
 INSTEAD OF UPDATE : Diaktifkan sekali dengan melewatkan statement UPDATE
 INSTEAD OF DELETE : Diaktifkan sekali dengan melewatkan statement DELETE
SINTAKS TRIGGER

CREATE TRIGGER <nama trigger>


ON <nama tabel> <event trigger>
AS
<statement SQL>
GO

ALTER TRIGGER <nama trigger>


ON <nama tabel> <event trigger>
AS
<statement SQL>
GO

DROP TRIGGER <nama trigger>


MENGAKTIFKAN DAN ME-NONAKTIF-KAN TRIGGER

 Dalam SQL server, trigger tidak selalu dijalankan, hal ini bergantung pada pengesetan yang
dilakukan terhadap trigger.
 Eksekusi trigger akan dilakukan hanya bila trigger diset ke dalam keadaan aktif (enable) dan
akan diabaikan jika trigger tersebut dalam keadaan non-aktif (disable).
 Secara default trigger selalu dalam keadaan aktif.

DISABLE TRIGGER ALL ON DATABASE;

ENABLE TRIGGER ALL ON DATABASE;

SELECT name FROM sys.triggers WHERE TYPE =‘TR’;


CONTOH

CREATE TRIGGER Tr_DataBarang


ON BARANG
AFTER INSERT
AS
print 'Data barang berhasil ditambahkan';
GO

INSERT INTO BARANG VALUES (‘B01',‘TV',5000000,20)


CONTOH

CREATE TRIGGER Tr_History


ON PENJUALAN
AFTER INSERT, UPDATE
AS
INSERT INTO History VALUES ((SELECT TOP 1 inserted.IdBrg FROM
inserted),(SELECT TOP 1 inserted.Jml FROM inserted), GETDATE())
GO

INSERT INTO PENJUALAN VALUES (‘P01’,‘B01',‘TV',2,10000000)

UPDATE PENJUALAN SET Qty=3 WHERE IdPnj=‘P01’


CONTOH

CREATE TRIGGER Tr_Barang


ON Barang
INSTEAD OF DELETE
AS
print 'Data barang tidak boleh dihapus'
GO

DELETE FROM BARANG WHERE KdBarang=‘B01’;


LATIHAN
Mahasiswa
NIM Nama Jurusan

Nilai
NIM MK Dosen Absen Tugas UTS UAS

1. Buat trigger setelah insert pada tabel mahasiswa. Trigger ini mempunyai fungsi untuk
memasukkan satu data kedalam tabel nilai untuk matakuliah MK-102, dan dosen NN.
2. Buat trigger sebelum delete pada tabel mahasiswa. Trigger ini mempunyai fungsi untuk
melakukan pengecekan apakah ada mahasiswa yang sudah mempunyai nilai.
Jika sudah ada, lakukan penghapusan data nilai terlebih dahulu, lalu lakukan penghapusan
data mahasiswa. Jika belum ada, lakukan penghapusan data mahasiswa

Anda mungkin juga menyukai