Pelajari tentang Pemicu MySQL dalam tutorial langsung ini dengan contoh. Menjelaskan cara menggunakan CREATE, INSERT, DELETE, dan UPDATE Triggers di MySQL Show
MySQL TRIGGER adalah objek yang terkait dengan tabel di MySQL. Ini adalah tindakan yang dijalankan sebagai respons terhadap peristiwa yang ditentukan di atas meja Misalnya, Anda dapat menentukan pemicu untuk dijalankan saat operasi INSERT, UPDATE, atau DELETE terjadi di tabel. Perlu dicatat bahwa persyaratan utama untuk mengeksekusi pemicu adalah SUPERUSER atau hak akses root dari akun tempat pemicu dijalankan => Cek SEMUA Tutorial MySQL Disini Apa yang Akan Anda Pelajari Pemicu MySQLSecara umum, ada 2 jenis Pemicu
MySQL8. 0 hanya mendukung pemicu tingkat baris yang dipanggil untuk setiap penyisipan/pembaruan/penghapusan baris SintaksisMari kita lihat sintaks untuk mendefinisikan atau membuat TRIGGER di MySQL CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW [trigger_order] body trigger_name. Nama unik untuk objek pemicu di dalam tabel trigger_time. Nilai yang diizinkan adalah SEBELUM & SETELAH – Bidang ini menunjukkan apakah pemicu akan diaktifkan SEBELUM atau SETELAH peristiwa trigger_event. Apakah peristiwa atau tindakan aktual yang akan mengarah pada pemanggilan pemicu Nilai yang diizinkan untuk bidang ini adalah
nama_tabel. Nama tabel MySQL yang pemicunya ditentukan trigger_order. Ini adalah bidang opsional dan digunakan untuk menentukan urutan eksekusi pemicu. Ini umumnya digunakan ketika ada beberapa pemicu yang terkait dengan kejadian yang sama – Dalam hal ini, kita dapat menentukan urutan eksekusi Ini menggunakan sintaks di bawah ini Catatan. Jika trigger_body akan berisi banyak pernyataan, kita dapat menggunakan sintaks yang mirip dengan cara kita menggunakannya untuk membuat PROSEDUR TERSIMPAN. Badan pemicu, dalam hal ini, akan diapit antara perintah BEGIN dan END dan seluruh definisi Pemicu akan berada di antara perintah DELIMITER untuk memiliki beberapa pernyataan yang ditentukan dengan blok BEGIN…END DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_ Aplikasi Menggunakan MySQL TriggersAda banyak aplikasi pemicu MySQL di kehidupan nyata
Uji DataNama tabel – item_inventaris CREATE TABLE item_inventory (id SMALLINT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), price DECIMAL(5,2), quantity INTEGER); BUAT PEMICU di MySQLMari kita lihat beberapa contoh penggunaan trigger MySQL CREATE PEMICU INSERT MySQLKita dapat membuat pemicu untuk baris INSERTS dalam tabel yang sudah ada. Ada 2 jenis trigger tersebut yaitu AFTER INSERT dan BEFORE INSERT SETELAH MASUKKAN PEMICUKami akan membuat pemicu SETELAH INSERT pada tabel yang disebutkan dalam data pengujian – item_inventory Mari buat tabel audit inventaris terlebih dahulu CREATE TABLE item_inventory_audit (id SMALLINT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, item_id VARCHAR(30), price DECIMAL(5,2), created_on DATETIME(6), quantity INTEGER); Kami akan membuat TRIGGER untuk menambahkan entri di tabel item_inventory_audit setelah setiap INSERT di tabel item_inventory CREATE TRIGGER trigger_tutorial.trigger_item_insert_audit AFTER INSERT ON trigger_tutorial.item_inventory FOR EACH ROW INSERT INTO trigger_tutorial.item_inventory_audit(item_id,price,created_on,quantity) VALUES(new.item_id, new.price, now(), new.quantity);_ Dalam definisi TRIGGER di atas
Kami juga dapat memeriksa apakah pemicu berhasil dibuat dengan menavigasi ke folder pemicu di tabel masing-masing pada klien MySQL GUI seperti MySQL Workbench Mari kita coba jalankan ini Kami akan INSERT record di tabel item_inventory INSERT INTO trigger_tutorial.item_inventory(name, price, quantity) VALUES("Henko Washing Powder",150.50,100); Kita sekarang dapat memeriksa apakah catatan terkait dalam tabel item_inventory_audit telah dibuat atau belum SELECT * FROM trigger_tutorial.item_inventory_audit;_ SEBELUM MEMASUKKAN PEMICUPemicu Before INSERT akan dipanggil SEBELUM setiap baris INSERT pada tabel target Sintaks untuk pembuatan Trigger tetap sama, seperti yang kita lihat di bagian sebelumnya BEFORE INSERT dapat digunakan ketika Anda ingin memperbarui nilai yang dimasukkan ke nilai lain atau default, dll DELIMITER $$ CREATE TRIGGER trigger_tutorial.trigger_item_before_insert BEFORE INSERT ON trigger_tutorial.item_inventory FOR EACH ROW BEGIN IF new.price > 100 THEN SET new.price = 1.02 * new.price; END IF; END $$ DELIMITER ; Misalkan kita ingin harga di tabel audit menjadi 2% lebih banyak dari data harga aktual yang dimasukkan Di sini, kami telah membuat pemicu BEFORE INSERT, yang akan mengubah harga baris baru yang ditambahkan ke 1. 02 kali lipat dari harga aslinya INSERT INTO trigger_tutorial.item_inventory(name, price, quantity) VALUES("Tomato Ketchup",120,20); SELECT * FROM trigger_tutorial.item_inventory_audit where item_id=2;_ PEMICU PEMBARUAN MySQLKita dapat membuat trigger untuk baris UPDATE dari tabel yang sudah ada. Mirip dengan INSERT, untuk UPDATE juga, kita dapat memiliki 2 jenis pemicu yaitu. e. SEBELUM PEMBARUAN dan SETELAH PEMBARUAN. Mari kita lihat contoh untuk kedua kasus tersebut Dalam pemicu UPDATE – kita dapat mengambil nilai BARU dan LAMA untuk item yang diperbarui masing-masing menggunakan kata kunci baru dan lama Mari kita buat Pemicu BEFORE UPDATE yang akan mengatur jumlah yang akan diperbarui di baris BARU menjadi selisih antara nilai LAMA dan BARU. Contoh, jika seseorang memperbarui kolom kuantitas pada tabel yang ada, maka
DELIMITER $$ CREATE TRIGGER trigger_tutorial.trigger_item_before_update BEFORE UPDATE ON trigger_tutorial.item_inventory FOR EACH ROW BEGIN IF old.quantity > new.quantity THEN SET new.quantity = old.quantity - new.quantity; ELSE SET new.quantity = 0; END IF; END $$ DELIMITER ;_ Mari kita juga membuat Pemicu SETELAH PEMBARUAN yang akan MENYISIPKAN baris baru dalam tabel audit dengan nilai kolom jumlah baru yang dihitung dalam PEMICU SEBELUM PEMBARUAN seperti yang ditunjukkan di atas DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_0 Sekarang mari kita pahami ini dengan bantuan sebuah contoh Misalkan kita melakukan INSERT awal di tabel item_inventory menggunakan kueri di bawah ini DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_6 Ini akan memicu masing-masing Pemicu SEBELUM INSERT dan SETELAH INSERT Sekarang mari kita jalankan UPDATE untuk Item ini (yang menyandang ID item – 2) DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_7 Sekarang urutan eksekusi pemicu untuk UPDATE adalah => PERNYATAAN PEMBARUAN => SEBELUM PEMICU PEMBARUAN => SETELAH PEMICU PEMBARUAN Logika di BEFORE UPDATE TRIGGER – akan memperbarui jumlah baris baru ke selisih nilai baru dan asli Karena kami memperbarui kuantitas menjadi 20 dan nilai aslinya adalah 60, nilai sebenarnya yang akan dimasukkan ke dalam tabel adalah 40 Mari lakukan SELECT pada tabel inventory_audit untuk memverifikasi hasilnya DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_1 Baris pertama yang Anda lihat di atas ditambahkan oleh INSERT Trigger Baris kedua ditambahkan sebagai bagian dari UPDATE
PEMICU HAPUS MySQLUntuk menghapus atau menjatuhkan MySQL TRIGGER, kita dapat menggunakan perintah DROP TRIGGER Sintaksis DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_8 Mari kita lihat contoh perintah Misalkan kita ingin menghapus trigger BEFORE INSERT yang kita buat di bagian sebelumnya. Pemicunya dinamai sebagai trigger_tutorial. trigger_item_before_insert Mari gunakan perintah DROP untuk menghapus ini DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_2 Setelah pemicu dihapus, tindakan apa pun yang terkait dengan pemicu akan batal dan tidak ada peristiwa seperti itu yang akan dimunculkan Daftar Semua Pemicu Terkait Dengan TabelUntuk mencantumkan semua pemicu yang terkait dengan skema atau database, Anda dapat menggunakan perintah SHOW TRIGGER Misalnya. Jika kita ingin mencantumkan semua pemicu dalam skema trigger_tutorial, maka kita dapat menggunakan perintah di bawah ini. DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_3 //Keluaran Anda dapat melihat banyak detail berbeda terkait dengan berbagai pemicu yang tersedia dalam skema Beberapa detail kolom seperti itu ditunjukkan di bawah ini Membuat Pemicu Menggunakan MySQL GUI Client – MySQL WorkbenchMirip dengan membuat menggunakan acara CREATE TRIGGER, pemicu juga dapat dibuat menggunakan Klien GUI MySQL seperti MySQL Workbench Mari kita lihat langkah-langkah untuk membuat Trigger BEFORE INSERT menggunakan MySQL Workbench #1) Klik kanan pada nama tabel tempat pemicu perlu dibuat #2) Pilih opsi “Ubah Tabel” #3) Buat "Tab Pemicu" #4) Klik tanda '+' di sebelah bagian BEFORE INSERT untuk membuat pemicu #5) Di sisi kanan, perbarui/edit definisi pemicu. Kami akan menambahkan pernyataan IF untuk menetapkan harga = 1. 02 * harga untuk harga > 100 DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_4 #6) Klik "Terapkan" untuk Menyimpan Pemicu #7) Pemicu sekarang dibuat. Untuk memverifikasi, Anda dapat menjalankan perintah SHOW TRIGGERS dan memvalidasi jika pemicu yang baru dibuat ditampilkan DELIMITER $$ // Trigger Syntax BEGIN -- Statements END $$ DELIMITER ;_3 Mirip dengan BEFORE INSERT, kita dapat menambah/menghapus jenis pemicu lain seperti SETELAH INSERT, SEBELUM/SETELAH UPDATE, SEBELUM/SETELAH DELETE melalui MySQL Workbench GUI Client juga Penanganan Kesalahan Selama Eksekusi PemicuPenting untuk memahami bagaimana MySQL menangani kesalahan yang terjadi selama eksekusi pemicu
Keuntungan Menggunakan Pemicu
Pertanyaan yang Sering DiajukanT #1) Apa itu Pemicu di MySQL? Menjawab. Sederhananya, Pemicu di MySQL adalah sejenis tindakan sebagai respons terhadap peristiwa apa pun yang ditentukan Misalnya, Misalkan kita ingin melakukan beberapa tindakan (berupa mengeksekusi beberapa pernyataan/memasukkan data di tabel lain) pada INSERTING atau UPDATING baris di beberapa tabel lain, . T #2) Bagaimana Pemicu diterapkan di MySQL? Jawaban. Pemicu diberi nama objek dalam MySQL DATABASE i. e. Pemicu dikaitkan dengan tabel di database MySQL Pemicu dapat dibuat menggunakan perintah CREATE TRIGGER dan dapat berupa salah satu dari 2 jenis
T #3) Bisakah ada Beberapa Pemicu yang terkait dengan peristiwa yang sama? Jawab. Ya, tidak apa-apa memiliki beberapa pemicu yang terkait dengan peristiwa yang sama. Misalnya, kita dapat menentukan beberapa pemicu untuk dieksekusi ketika sebuah baris DIMASUKKAN ke dalam tabel. Urutan eksekusi pemicu secara default adalah urutan pembuatan Pemicu. Urutan ini juga dapat diubah, menggunakan bidang trigger_order saat membuat pemicu T #4) Apakah mungkin memperbarui pemicu yang ada? Menjawab. Di MySQL, tidak ada pernyataan untuk memperbarui atau mengubah pemicu yang ada. Jika setelah pembuatan pemicu, Anda perlu mengubah pemicunya. Anda dapat DROP trigger yang ada menggunakan perintah DROP TRIGGER dan membuat yang baru dengan nama yang sama KesimpulanDalam tutorial ini, kita belajar tentang konsep menggunakan TRIGGERS di MySQL. Pemicu memungkinkan pengguna untuk menentukan tindakan khusus sebagai respons terhadap peristiwa yang telah ditentukan sebelumnya seperti INSERT atau UPDATE dari baris di tabel lain, dll. Pemicu sangat membantu dalam berbagai kasus penggunaan, seperti
Pemicu juga sebagian besar mendukung penggunaan kembali kode dan mengoptimalkan kinerja dengan mengurangi panggilan jaringan bolak-balik untuk pembaruan individual Bagaimana Anda menulis pemicu sebelum memasukkan?Parameter sintaks pemicu BEFORE INSERT dapat dijelaskan seperti di bawah ini. . Pertama, kita akan menentukan nama trigger yang ingin kita buat. . Kedua, kami akan menentukan waktu tindakan pemicu, yang seharusnya BEFORE INSERT. . Ketiga, kami akan menentukan nama tabel yang terkait dengan pemicu Bagaimana Anda bisa membuat pemicu sebelum dan sesudah saat menyisipkan kueri?Pertama, tentukan nama pemicu yang ingin Anda buat di klausa CREATE TRIGGER. Kedua, gunakan klausa BEFORE INSERT untuk menentukan waktu untuk memanggil pemicu. Ketiga, tentukan nama tabel yang dikaitkan dengan pemicu setelah kata kunci ON
Bagaimana cara membuat pemicu setelah dimasukkan di MySQL?Pertama, kita akan menentukan nama pemicu yang ingin kita buat. Itu harus unik dalam skema. Kedua, kita akan menentukan waktu tindakan pemicu, yang seharusnya menjadi klausa SETELAH INSERT untuk memanggil pemicu. . BUAT TRIGGER trigger_name SETELAH INSERT PADA table_name UNTUK SETIAP BARIS trigger_body ; Kapan menggunakan pemicu sebelum dan sesudah di MySQL?Biasanya, penggunaan pemicu Sebelum adalah untuk melakukan validasi sebelum menerima data ke tabel dan memeriksa nilainya sebelum menghapusnya dari tabel. Namun, biasanya penggunaan After trigger adalah untuk memperbarui data dalam tabel karena terjadi perubahan |