Dalam artikel ini, kita akan belajar tentang konsep trigger dalam SQL dan implementasinya dengan bantuan sebuah contoh.
Pemicu dalam Bahasa Kueri Terstruktur adalah sekumpulan pernyataan prosedural yang dieksekusi secara otomatis ketika ada umpan balik untuk peristiwa tertentu pada tabel di database. Pemicu digunakan untuk melindungi integritas data dalam database.
Mari kita lihat situasi berikut untuk memahami konsep trigger dalam SQL:
Misalkan Supriya adalah manajer teknologi informasi di sebuah perusahaan multinasional. Ketika catatan karyawan baru dimasukkan ke dalam database, dia harus mengirim pesan 'Selamat' kepada setiap karyawan baru. Jika ada lima atau enam pegawai, Supriya bisa melakukannya secara manual, tapi jika pegawai baru lebih dari seribu, maka dalam kondisi seperti itu, dia harus menggunakan trigger di database.
Oleh karena itu, Supriya harus membuat trigger di tabel, yang secara otomatis akan mengirimkan pesan 'Selamat' kepada karyawan baru setelah catatan mereka dimasukkan ke dalam database.
Pemicu selalu dieksekusi dengan tabel tertentu dalam database. Jika kami menghapus tabel, semua pemicu yang terkait dengan tabel tersebut juga akan dihapus secara otomatis.
Pemicu dalam Bahasa Kueri Terstruktur dipanggil hanya sebelum peristiwa terjadi atau setelah peristiwa terjadi.
Hanya tiga peristiwa yang terjadi di pemicu sebelum atau sesudah peristiwa yaitu peristiwa Sisipkan, peristiwa Perbarui, atau peristiwa Hapus.
1. MASUKKAN Acara :Event insert terjadi setiap kali record baru dimasukkan ke dalam tabel.
2. PERBARUI Acara :Peristiwa pembaruan terjadi setiap kali catatan yang ada diperbarui dalam tabel.
3. HAPUS Acara: Event Delete terjadi setiap kali record dihapus dari tabel.
Jenis pemicu dalam Bahasa Kueri Terstruktur
Berikut adalah enam jenis pemicu yang digunakan dalam Bahasa Kueri Terstruktur:
1. SETELAH MASUKKAN Pemicu:
Pemicu setelah penyisipan dipanggil dalam SQL setelah catatan dimasukkan ke dalam tabel.
2. SETELAH PEMBARUAN Pemicu:
Pemicu setelah pembaruan dipanggil dalam SQL setelah catatan yang ada di tabel diperbarui.
3. SETELAH HAPUS Pemicu:
Pemicu after delete dipanggil dalam SQL setelah record dihapus dari tabel.
4. SEBELUM MASUKKAN Pemicu:
Pemicu sebelum penyisipan dipanggil dalam SQL sebelum catatan dimasukkan ke dalam tabel.
5. SEBELUM PEMBARUAN Pemicu:
Pemicu sebelum pembaruan dipanggil dalam SQL sebelum catatan yang ada di tabel diperbarui.
6. SEBELUM MENGHAPUS Pemicu:
Pemicu sebelum penghapusan dipanggil dalam SQL sebelum catatan dihapus dari tabel.
Sintaks pemicu dalam SQL:
CREATE TRIGGER Trigger_Name
[BEFORE | AFTER] [Insert | Update | Delete]
ON [Table_Name]
[FOR EACH ROW | FOR EACH COLUMN]
AS
Set of SQL Statement
- Dalam sintaks pemicu, kita harus mendefinisikan nama pemicu tepat setelah kata kunci CREATE TRIGGER dalam sintaks.
- Setelah nama pemicu, kita harus menentukan pemicu mana yang ingin kita panggil, pemicu sebelum atau kata kunci pemicu setelah dengan nama peristiwa.
- Kemudian, kita harus menyebutkan nama tabel yang memicu terjadinya.
- Setelah nama tabel, kita harus menentukan pemicu pada tingkat baris atau pemicu tingkat kolom.
- Dan pada akhirnya, kita harus menulis pernyataan SQL yang bekerja pada peristiwa yang terjadi.
Contoh pemicu dalam SQL
Untuk memahami konsep pemicu dalam SQL, kita harus membuat tabel di mana pemicu akan dieksekusi.
Kueri berikut membuat tabel Siswa dalam database SQL.
CREATE TABLE Student(
Student_rollno INT NOT NULL PRIMARY KEY,
FirstName varchar(40),
English_Marks INT,
Physics_Marks INT,
Chemistry_Marks INT,
Biology_Marks INT,
Maths_Marks INT,
Total_Marks INT,
Percentage INT);
Kueri berikut menunjukkan struktur tabel Siswa:
Mahasiswa DESC;
Field | Jenis | NULL | Kunci | Bawaan | Ekstra |
Student_RollNo | INT | TIDAK | PRI | NULL | |
Nama_Depan | Varchar(40) | YA | NULL | ||
Bahasa Inggris_Marks | INT | YA | NULL | ||
Fisika_Marks | INT | YA | NULL | ||
Mark_Kimia | INT | YA | NULL | ||
Tanda_Biologi | INT | YA | NULL | ||
Matematika_Marks | INT | YA | NULL | ||
Total_Marks | INT | YA | NULL | ||
Persentase | INT | YA | NULL |
Kueri berikut memicu pemicu sebelum penyisipan catatan siswa dalam tabel:
CREATE TRIGGER Student _Marks
BEFORE INSERT
ON
Student
FOR EACH ROW
SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,
new.Percentage = ( new.Total_Marks / 500) * 100;
Kueri berikut menyisipkan catatan ke tabel Siswa.
INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);
Untuk memeriksa output dari pernyataan INSERT di atas, Anda harus mengetikkan pernyataan SELECT berikut:
SELECT * FROM Student
Keluaran:
Student_RollNo | Nama_Depan | Bahasa Inggris_Marks | Fisika_Marks | Nilai_Kimia | Tanda_Biologi | Maths_Marks | Total_Marks | Persentase |
1 | Raman | 90 | 80 | 75 | 70 | 92 | 407 | 81 |
Keuntungan Pemicu di SQL
Berikut adalah tiga keuntungan utama pemicu dalam Bahasa Kueri Terstruktur:
- SQL menyediakan cara alternatif untuk memelihara data dan integritas referensial dalam tabel.
- Pemicu membantu dalam menjalankan tugas terjadwal secara otomatis.
- Mereka menangkap kesalahan di lapisan basis data berbagai bisnis.
- Mereka mengizinkan pengguna database untuk memvalidasi nilai sebelum memasukkan dan memperbarui.
Kekurangan Pemicu di SQL
Berikut ini adalah kelemahan utama dari trigger di Structured Query Language:
- Mereka tidak dikompilasi.
- Tidak mungkin menemukan dan men-debug kesalahan di pemicu.
- Jika kita menggunakan kode kompleks di pemicu, itu membuat aplikasi berjalan lebih lambat.
- Pemicu meningkatkan beban tinggi pada sistem database.