Trigger Pada SQL [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Trigger Pada SQL Server Trigger adalah program yang dieksekusi oleh DBMS ketika suatu event terjadi. Trigger diaplikasikan pada tabel atau view. Sebuah tabel atau view dapat memiliki lebih dari 1 trigger. Tetapi sebuah trigger hanya digunakan pada 1 tabel atau view. Trigger dijalankan karena request insert, update, atau delete pada suatu tabel atau view. 3 Tipe trigger: • • •



BEFORE (insert, update, delete) INSTEAD OF (insert, update, delete) AFTER (insert, update, delete)



Total ada 9 tipe trigger. SQL Server hanya mensupport 6 tipe trigger. Hanya tipe AFTER dan INSTEAD OF saja. Kegunaan TRIGGER • Menghasilkan nilai yang sudah ditentukan • Mengupdate View • Melaksanakan Aksi dengan referensi integritas Membuat TRIGGER Klausa FOR memiliki default untuk klausa AFTER. Sql_statement merupakan TransactSQL, bisa ada definisi variable, query, control-of-flow (IF, ELSE, WHILE, BEGIN – END). CREATE TRIGGER [nama_trigger] ON [table atau view] { FOR | AFTER | INSTEAD OF } { [DELETE] [,] [INSERT] [,] [UPDATE] } AS [sql_statement] Sample Studi Kasus TRIGGER Database KAMPUS memiliki table MHS, MK, dan NILAIMHS, dengan data sbb:ο







Membuat TRIGGER untuk table NILAIMHS agar jika ada INSERT / UPDATE / DELETE di table NILAIMHS, maka secara otomatis kolom IPK di table MHS segera bisa terupdate oleh system database.



CREATE TRIGGER IPK_MHS ON NILAIMHS AFTER INSERT, UPDATE, DELETE AS DECLARE @NPMMHS varchar(6), @IPKMHS real; select @NPMMHS=NPM from NILAIMHS; select @IPKMHS =CONVERT(real, sum((ASCII(‘E’)ASCII(NILAIMHS.NilaiAbjad))*MK.SKS))/CONVERT(real, sum(MK.SKS)) from NILAIMHS, MK where NILAIMHS.KodeMK = MK.KodeMK group by NILAIMHS.NPM having NILAIMHS.NPM = @NPMMHS; update MHS set IPK = @IPKMHS where NPM = @NPMMHS; Coba test dengan SQL insert berikut ini :



1. Insert into NILAIMHS values (‘M-001’,’K-003’, ‘B’) 2. Insert into NILAIMHS values ( ‘M-002’,’K-001’, ‘A’) 3. Insert into NILAIMHS values ( ‘M-001’,’K-004’, ‘C’) Cek apakah kolom IPK di table MHS berubah. Select * from MHS Lakukan untuk kasus UPDATE dan DELETE Membuat TRIGGER untuk table MK agar jika ada INSERT / UPDATE dengan SKS tidak sesuai bisa dibatalkan, cara membatalkan dengan statement ROLLBACK TRANSACTION. CREATE TRIGGER CEK_SKS_MK ON MK AFTER INSERT, UPDATE AS DECLARE @SKSMK int; select @SKSMK=SKS from MK; IF (@SKSMK 1 THEN



/* work has been done here before */ SELECT



Sum(NetPrice) INTO sumNetPrice



FROM



ArtistWorkNew AW



WHERE



AW.WorkID = new.WorkID



GROUP BY



AW.WorkID;



avgNetPrice = sumNetPrice / (rowcount – 1); /* Now choose larger */ IF avgNetPrice > 2 * newAcquistionPrice Then new:AskingPrice = avgNetPrice; ELSE new:AskingPrice = avgNetPrice; END IF ELSE /* Errr, rowcount cannot less then 1, Do something */ END IF; END IF; END;



Cara Membuat Trigger di SQl Server Bagaimanakah cara membuat trigger di SQL SERVER ? Pada contoh membuat trigger di sini anda harus mempunyai SQL Server terinstall di computer anda lengkap dengan Enterprise Manager-nya. Pada posting kali ini saya akan memberikan contoh membuat trigger pada SQL Server 2000. Kasus-nya adalah sebagai berikut: Tabel penjualan memiliki field-field Nomor_Penjualan, Tanggal_Penjualan, Nama_Suplier, Bulan dan Tahun. Data yang dimasukkan dari aplikasi adalah data Tanggal_Penjualan dan Nama_Pelanggan. Data Bulan dan Tahun akan diisi oleh trigger berdasarkan data dari field Tanggal_Penjualan. Misalnya Tanggal penjualan adalah 20 Mei 2009, maka trigger pada table penjualan akan mengupdate data field Bulan dengan angka 5 dan field tahun dengan angka 2009. Data field Nomor_Penjualan adalah autoincrement sehingga tidak perlu diberi nilainya pada saat penambahna data. Langkah-langkh membuat trigger di SQL Server 2000 adalah: Buat table penjualan pada database anda dengan field-field Nomor_Penjualan, Tanggal_Penjualan, Nama_Pelanggan, Bulan dan Tahun. Pada design view di SQL Server Enterprise Manager klik icon triggers.



Akan muncul dialog box Trigger Properties.



Isi Text dari Trigger Properties yang ada dengan perintah Transact-SQL berikut: CREATE TRIGGER [ISIDATABULANDANTAHUN] ON dbo.PENJUALAN FOR INSERT,UPDATE AS DECLARE @NO_PENJUALAN int, @BULAN int, @TAHUN int SELECT @NO_PENJUALAN=NOMOR_PENJUALAN, @BULAN=MONTH(TANGGAL_PENJUALAN), @TAHUN=YEAR(TANGGAL_PENJUALAN) FROM INSERTED; BEGIN UPDATE PENJUALAN SET BULAN=@BULAN,TAHUN=@TAHUN WHERE NOMOR_PENJUALAN=@NO_PENJUALAN; END Untuk memeriksa sintaks penulisan sudah benar atau belum klik tombol Check Syntax. Jika penulisan sitak SQL masih salah akan muncul peringatan error. Klik tombol OK untuk menyimpan trigger. Klik tombol Close untuk menutup Trigger Properties Mencoba hasil trigger yang baru saja kita buat. Untuk mencoba trigger yang baru saja dibuat kita harus mengisi data pada tabel penjualan. Ada berbagai cara untuk mengisi data ke dalam tabel penjualan. Pada contoh ini saya akan menggunakan perintah Insert dengan menggunakan SQL Query Analizer. Jalankan program SQL Query Analizer dan login ke SQL Server dengan privilages setingkat user administrator



Aktifkan database di mana kita menyimpan tabel penjualan. Tulisakn perintah berikut: insert into penjualan (tanggal_penjualan,nama_pelanggan) values ('05/20/2009','Budi Siswanto'); select * from penjualan; Tekan F5 pada keyboard untuk mengeksekusi perintah SQL yang baru saja kita tulis. Hasilnya seperti pada gambar berikut:



Pada perintah sql di atas kita tidak menyertakan data bulan dan tahun, tetapi data feld bulan dan tahun pada tabel penjualan mempunyai nilai 5 dan 2009 sesuai dengan tanggal_penjualan.