TRIGGER Trigger adalah sekumpulan perintah Transact

advertisement
TRIGGER
Trigger adalah 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 rutin-rutin keamanan. Daripada memberikan kontrol
untuk aplikasi, kita bisa memberikan kontrol untuk tabel itu sendiri melalui trigger
sehingga penanganan database bisa jauh lebih aman. Adapun beberapa hal yang dapat
dilakukan trigger di antaranya:
 Membuat log untuk mendaftarkan penggunaan tabel
 Mengupdate tabel-tabel lain apabila ada penambahan atau perubahan lain di
dalam tabel yang sedang aktif.
Berikut contoh pembuatan trigger dengan nama BarangBaru yang akan dieksekusi pada
tabel tblBarang ketika terjadi proses penyimpanan record. Jika penyimpanan record baru
sukses dilakukan pada tabel tblBarang, maka trigger tersebut akan menampilkan pesan
konfirmasi “Data barang baru berhasil dimasukkan”
Create trigger BarangBaru ON tblBarang
FOR INSERT
AS
Print ‘Data barang baru berhasil di masukkan’
Berikut contoh pembuatan trigger dengan nama BarangUpdate dibuat untuk memberikan
konfirmasi tiap kali ada data yang diubah di table tblBarang dengan pesan “Data barang
berhasil diubah”
Create trigger BarangUpdate ON tblBarang
FOR UPDATE
AS
Print ‘Data barang baru berhasil di ubah !!!!!!!!’
Berikut contoh pembuatan trigger dengan nama BarangDelete dibuat untuk memberikan
konfirmasi tiap kali ada data yang mengapus di table tblBarang dengan pesan “Data
barang berhasil dihapus”
Create trigger BarangDelete ON tblBarang
FOR DELETE
AS
Print ‘Data barang baru berhasil di hapus !!!!!!!!’
Untuk melihat trigger dari suatu tabel pergunakan stored procedure sp_helptrigger
NamaTabel, sedangkan untuk melihat isi script dari suatu trigger pergunakan stored
procedure sp_helptext namaTrigger
Contoh:
USE dbAcuy
GO
IF EXISTS(SELECT Name FROM sysobjects
WHERE Name = 'tblMahasiswa')
BEGIN
DROP TABLE tblMahasiswa
END
GO
CREATE TABLE tblMahasiswa(
Npm CHAR(10) PRIMARY KEY,
Nama VARCHAR(50) DEFAULT NULL
)
GO
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
GO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
tblMahasiswa
VALUES('7006301051',
VALUES('7006301052',
VALUES('7006301053',
VALUES('7006301054',
VALUES('7006301055',
VALUES('7006301056',
VALUES('7006301057',
VALUES('7006301058',
VALUES('7006301059',
VALUES('7006301060',
SELECT * FROM tblMahasiswa
GO
IF EXISTS(SELECT Name FROM sysobjects
WHERE Name = 'tblLog')
BEGIN
DROP TABLE tblLog
END
GO
CREATE TABLE tblLog(
IdRecord VARCHAR(10) ,
Descrp VARCHAR(50),
Tgl DATETIME,
Ket VARCHAR(20),
Tabel VARCHAR(20)
)
GO
'STEVANI SWEETENIA')
'THIA TRISANTIA')
'EKO SUPRIADI')
'IRFAN WARDHANA KUSUMA')
'TATI HARYATI')
'BONIX NOVELLY')
'ERLY LINGGA DPN')
'NINDY')
'RIKY GUNAWAN')
'M. ROHMAT WIGUNA')
IF EXISTS(SELECT Name FROM sysobjects
WHERE Name = 'tr_Mahasiswa_ins')
BEGIN
DROP TRIGGER tr_Mahasiswa_del
END
GO
CREATE TRIGGER tr_Mahasiswa_del ON tblMahasiswa
FOR DELETE
AS
DECLARE @IdRecord VARCHAR(10),
@Desc VARCHAR(50),
@Tgl DATETIME,
@Ket VARCHAR(20),
@Tabel VARCHAR(20)
SELECT @IdRecord = Npm FROM DELETED
SELECT @Desc = Nama FROM DELETED
SET @Tgl = GETDATE()
SET @Ket = 'DELETED'
SET @Tabel = 'tblMahasiswa'
INSERT INTO tblLog VALUES(@IdRecord, @Desc, @Tgl, @Ket, @Tabel)
GO
DELETE FROM tblMahasiswa WHERE NPM = '7006301052'
GO
Download