Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Apa Pemicu dalam SQL dan bagaimana menerapkannya?

Pemicu dalam SQL adalah kode prosedural yang dijalankan secara otomatis sebagai respons terhadap peristiwa tertentu pada tabel tertentu. Penting untuk memahami bagaimana kode kecil ini membuat perbedaan besar dalam kinerja database. Dalam artikel ini, Anda akan mempelajari cara menerapkan pemicu beserta contohnya.

Topik berikut akan dibahas dalam artikel ini:

  • Apa itu Pemicu?
  • Sintaks dan Contoh
  • Operasi di Pemicu
  • Keuntungan dan Kerugian

Apa itu Pemicu?

Pemicu adalah kode SQL yang dijalankan secara otomatis sebagai respons terhadap peristiwa tertentu pada tabel tertentu. Ini digunakan untuk menjaga integritas data. Pemicu dalam SQL bekerja mirip dengan pemicu dunia nyata. Misalnya, ketika pelatuk pistol ditarik, peluru ditembakkan. Kita semua tahu ini, tapi bagaimana ini terkait dengan Pemicu di SQL? Untuk memahami ini, mari pertimbangkan situasi hipotetis.

John adalah petugas pemasaran di sebuah perusahaan. Ketika data pelanggan baru dimasukkan ke dalam database perusahaan, dia harus mengirim pesan selamat datang ke setiap pelanggan baru. Jika satu atau dua pelanggan John bisa melakukannya secara manual, tapi bagaimana jika jumlahnya lebih dari seribu? Nah dalam skenario seperti itu, pemicu berguna.

Dengan demikian, sekarang John dapat dengan mudah membuat pemicu yang secara otomatis akan mengirim email selamat datang ke pelanggan baru setelah data mereka dimasukkan ke dalam database. Jadi saya harap Anda mengerti dengan pengenalan Pemicu di SQL.

Selalu ingat bahwa tidak boleh ada dua pemicu dengan waktu tindakan dan peristiwa serupa untuk satu tabel. Misalnya, kita tidak dapat memiliki dua pemicu SEBELUM UPDATE untuk sebuah tabel. Tapi kita dapat memiliki SEBELUM PEMBARUAN dan SEBELUM MASUKKAN pemicu, atau BEFORE UPDATE dan SETELAH PEMBARUAN pemicu.

Sebelum kita masuk lebih jauh ke dasar-dasar pemicu, saya sarankan Anda untuk memahami konsep Dasar-dasar SQL dan Normalisasi sehingga Anda lebih memahami Pemicu di SQL.

Sintaks dan Contoh

Sekarang mari kita lihat sintaks pemicu.

Create Trigger Trigger_Name
(Before | After)  [ Insert | Update | Delete]
on [Table_Name]
[ for each row | for each column ]
[ trigger_body ]

Sekarang izinkan saya memecah sintaks ini dan menjelaskan setiap bagian secara mendetail.

  • Buat Pemicu
    Kedua kata kunci ini digunakan untuk menentukan bahwa blok pemicu akan dideklarasikan.
  • Nama_Pemicu
    Ini menentukan nama pemicu. Nama pemicu harus unik dan tidak boleh berulang.
  • ( Sebelum | Setelah )
    Ini menentukan kapan pemicu akan dieksekusi. Ini memberi tahu kita waktu pemicu dimulai, yaitu sebelum peristiwa yang sedang berlangsung atau setelahnya.
  • Sebelum Pemicu digunakan untuk memperbarui atau memvalidasi nilai record sebelum disimpan ke database.
  • Setelah Pemicu digunakan untuk mengakses nilai bidang yang ditetapkan oleh sistem dan untuk mempengaruhi perubahan dalam catatan lain. Catatan yang mengaktifkan pemicu setelahnya bersifat hanya-baca. Kami tidak dapat menggunakan pemicu Setelah jika kami ingin memperbarui catatan karena akan menyebabkan kesalahan hanya-baca.
  • [ Sisipkan | Perbarui | Hapus ]
    Ini adalah operasi DML dan kita dapat menggunakan salah satunya dalam pemicu tertentu.
  • di [ Nama_Tabel ]
    Kita perlu menyebutkan nama tabel tempat pemicu diterapkan. Jangan lupa untuk menggunakan di kata kunci dan juga pastikan tabel yang dipilih ada di database.
  • [ untuk setiap baris | untuk setiap kolom ]
    1. Pemicu tingkat baris dijalankan sebelum atau sesudah nilai kolom apa pun dari baris perubahan
    2. Pemicu Level Kolom dijalankan sebelum atau setelah kolom yang ditentukan perubahan
  • [ trigger_body]
    Ini terdiri dari kueri yang perlu dijalankan saat pemicu dipanggil.

Jadi ini semua tentang pemicu sederhana. Tapi kita juga bisa membuat pemicu bersarang yang bisa melakukan multi-proses. Juga menangani dan menghentikannya pada waktu yang tepat sangat penting. Jika kita tidak mengakhiri pemicu dengan benar, itu dapat menyebabkan loop tak terbatas.

Anda mungkin bertanya-tanya dalam skenario mana kita dapat menggunakan pemicu bersarang. Daripada memberi Anda jawaban yang disesuaikan, izinkan saya berbagi skenario dengan Anda, yang akan membantu Anda memahami pemicu bersarang dengan cara yang lebih baik. Melanjutkan skenario sebelumnya, John mengirim email untuk setiap pelanggan baru yang ditambahkan ke database perusahaan. Sekarang, bagaimana jika dia ingin melacak jumlah pelanggan yang dikirimi email? Sekarang John perlu membuat pemicu bersarang untuk melacak hitungan bersama dengan mengirim email.

Jadi itu saja tentang sintaks pemicu, sekarang mari kita coba menerapkan contoh pemicu di SQL.

Contoh untuk Pemicu:

Pada pemicu di bawah ini, kami mencoba menghitung persentase siswa segera setelah detailnya diperbarui ke database.

CREATE TRIGGER sample_trigger
before INSERT
ON student
FOR EACH ROW
SET new.total = new.marks/6;

Di sini "BARU" kata kunci mengacu pada baris yang terpengaruh.

Operasi dalam Pemicu

Kita dapat melakukan banyak operasi menggunakan pemicu. Beberapa mungkin sederhana dan beberapa mungkin sedikit rumit, tetapi jika kita menelusuri kueri, itu akan mudah dipahami.

  • JAUHKAN Pemicu
DROP TRIGGER trigger name;
  • Menampilkan Pemicu

Kode di bawah ini akan menampilkan semua pemicu yang ada.

SHOW TRIGGERS;

Kode di bawah ini akan menampilkan semua pemicu yang ada di database tertentu.

SHOW TRIGGERS
IN database_name;

Contoh:

SHOW TRIGGERS IN edureka;

Pada contoh di atas, semua pemicu yang ada di database bernama Edureka akan ditampilkan.

Kami juga melihat beberapa varian utama pemicu yaitu Before insert dan After insert. Kita telah melihat pemicu dalam contoh. Tetapi dengan bantuan tabel mari kita lihat bagaimana tepatnya ini bekerja.

Seperti yang sudah kita pahami tentang cara membuat trigger, sekarang mari kita pahami dua varian trigger yaitu Before insert dan After insert. untuk mengimplementasikannya, mari kita buat tabel siswa dengan berbagai kolom seperti yang ditunjukkan di bawah ini:

CREATE TABLE Student(
studentID INT NOT NULL AUTO_INCREMENT,
FName VARCHAR(20),
LName VARCHAR(20),
Address VARCHAR(30),
City VARCHAR(15),
Marks INT,
PRIMARY KEY(studentID)
);

Sekarang jika kita menjalankan kueri ini, kita mendapatkan tabel berikut.

Mari kita coba menggunakan varian pertama yaitu Sebelum Menyisipkan

CREATE TRIGGER calculate
before INSERT 
ON student
FOR EACH ROW
SET new.marks = new.marks+100;

Di sini ketika kita memasukkan data ke tabel siswa secara otomatis trigger akan dipanggil. Pemicu akan menambahkan 100 ke kolom nilai ke kolom siswa.

Sekarang mari kita gunakan varian kedua yaitu Setelah Sisipkan

Untuk menggunakan varian ini, kita memerlukan satu tabel lagi, yaitu Persentase tempat pemicu akan menyimpan hasilnya. Gunakan kode di bawah ini untuk membuat Tabel Persentase.

create table Final_mark(
per int );

Sekarang mari kita gunakan pemicu setelah penyisipan

CREATE TRIGGER total_mark
after insert 
ON student
FOR EACH ROW
insert into Final_mark values(new.marks);

Di sini ketika kita memasukkan data ke tabel, total_mark memicu akan menyimpan hasilnya di tabel Final_mark.

Itu saja tentang operasi pada pemicu, sekarang mari kita lanjutkan dan lihat kelebihan dan kekurangannya.

Keuntungan dan Kerugian Pemicu

Keuntungan

  • Memaksa keamanan persetujuan pada tabel yang ada di database
  • Pemicu menyediakan cara lain untuk memeriksa integritas data
  • Penangkal tidak valid pertukaran
  • Pemicu menangani kesalahan dari lapisan basis data
  • Biasanya pemicu berguna untuk memeriksa data perubahan tabel
  • Pemicu memberikan cara alternatif untuk menjalankan stugas terjadwal . Dengan menggunakan pemicu, kita tidak perlu menunggu acara terjadwal berjalan karena pemicu dipanggil secara otomatis sebelum atau setelah perubahan dilakukan pada data dalam tabel

Kerugian s

  • Pemicu hanya dapat memberikan validasi yang diperpanjang , yaitu, tidak semua jenis validasi. Untuk validasi sederhana, Anda dapat menggunakan batasan NOT NULL, UNIQUE, CHECK, dan FOREIGN KEY
  • Pemicu dapat meningkatkan overhead dari basis data
  • Pemicu bisa jadi sulit untuk dipecahkan karena mereka mengeksekusi secara otomatis dalam database, yang mungkin tidak terlihat oleh aplikasi klien

Ini membawa kita ke akhir artikel Pemicu dalam SQL ini. Saya harap Anda memahami konsep Pemicu.

Jika Anda ingin mempelajari lebih lanjut tentang MySQL dan mengenal database relasional sumber terbuka ini, lihat Pelatihan Sertifikasi DBA MySQL kami yang dilengkapi dengan pelatihan langsung yang dipimpin instruktur dan pelatihan nyata -pengalaman proyek hidup. Pelatihan ini akan membantu Anda memahami MySQL secara mendalam dan membantu Anda menguasai subjek tersebut.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar Triggers in SQL ini dan kami akan menghubungi Anda kembali.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dasar-dasar ekspresi tabel, Bagian 10 – Tampilan, SELECT *, dan perubahan DDL

  2. Masalah Halloween – Bagian 4

  3. Tindak lanjut #1 pada pencarian wildcard terkemuka

  4. Pendekatan terbaik untuk total lari berkelompok

  5. 11 Pernyataan SQL Umum dengan Contoh Dasar