MySQL - Sebelum Insert Trigger

Selamat datang, para ahli basis data masa depan! Hari ini, kita akan mempelajari dunia magis MySQL triggers, khususnya trigger "Sebelum Insert". Jangan khawatir jika Anda baru saja memulai; saya akan memandu Anda langkah demi langkah, sama seperti yang saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Mari kita mulai perjalanan yang menarik ini bersama!

MySQL - Before Insert Trigger

Apa Itu MySQL Before Insert Trigger?

Imaginasikan Anda sebagai seorang bouncer di klub mewah. Tugas Anda adalah untuk memeriksa setiap orang sebelum mereka masuk. Itu tepat apa yang dilakukan trigger Before Insert untuk basis data Anda! Itu adalah penjaga khusus yang bereaksi sebelum data baru dimasukkan ke dalam tabel.

Titik Penting:

  1. Itu aktif secara otomatis sebelum operasi INSERT.
  2. Itu dapat mengubah data yang dimasukkan atau bahkan menghindari penempatan data tersebut.
  3. Itu adalah alat yang kuat untuk menjaga integritas data dan melaksanakan aturan bisnis.

Sekarang, mari kita lihat bagaimana kita dapat membuat dan menggunakan trigger ini!

Membuat Trigger Before Insert Dasar

mari kita mulai dengan contoh sederhana. Misalnya, kita memiliki tabel yang disebut employees:

CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2),
hire_date DATE
);

Sekarang, mari kita buat trigger yang memastikan semua karyawan baru memiliki gaji minimum $30,000:

DELIMITER //
CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
IF NEW.salary < 30000 THEN
SET NEW.salary = 30000;
END IF;
END//
DELIMITER ;

mari kitauraikan ini:

  1. DELIMITER //: Ini mengubah penggantian secara sementara sehingga kita dapat menggunakan tanda titik koma dalam trigger kita.
  2. CREATE TRIGGER before_employee_insert: Kita menamakan trigger kita.
  3. BEFORE INSERT ON employees: Ini menentukan kapan dan di mana trigger harus aktif.
  4. FOR EACH ROW: Trigger akan dijalankan untuk setiap baris yang dimasukkan.
  5. BEGIN ... END: Ini mengandung kode nyata trigger kita.
  6. IF NEW.salary < 30000 THEN SET NEW.salary = 30000;: Ini adalah logika kita. Jika gaji terlalu rendah, kita set ke minimum.
  7. DELIMITER ;: Kita mengembalikan penggantian ke tanda titik koma.

Sekarang, mari kita uji ini:

INSERT INTO employees (name, salary, hire_date) VALUES ('John Doe', 25000, '2023-05-01');
SELECT * FROM employees;

Anda akan melihat bahwa gaji John secara otomatis diatur ke $30,000. Magic, kan?

Contoh Trigger Before Insert Lanjut

mari kita tingkatkan permainan dengan contoh yang lebih kompleks. Kita akan membuat trigger yang:

  1. Secara otomatis mengatur tanggal masuk kerja ke hari ini jika tidak disediakan.
  2. Memastikan nama dalam huruf besar awal.
  3. Melog masukan ke tabel audit terpisah.

Pertama, mari kita buat tabel audit:

CREATE TABLE employee_audit (
id INT AUTO_INCREMENT PRIMARY KEY,
action VARCHAR(50),
employee_id INT,
old_data TEXT,
new_data TEXT,
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Sekarang, mari kita buat trigger lanjut:

DELIMITER //
CREATE TRIGGER before_employee_insert_advanced
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
-- Set hire date to today if not provided
IF NEW.hire_date IS NULL THEN
SET NEW.hire_date = CURDATE();
END IF;

-- Convert name to title case
SET NEW.name = CONCAT(
UPPER(SUBSTRING(NEW.name, 1, 1)),
LOWER(SUBSTRING(NEW.name FROM 2))
);

-- Log the insertion
INSERT INTO employee_audit (action, employee_id, new_data)
VALUES ('INSERT', NEW.id, CONCAT('Name: ', NEW.name, ', Salary: ', NEW.salary, ', Hire Date: ', NEW.hire_date));
END//
DELIMITER ;

Trigger ini melakukan beberapa hal:

  1. Memeriksa jika hire_date NULL dan mengaturnya ke tanggal saat ini jika begitu.
  2. Mengonversi nama ke huruf besar awal menggunakan fungsi string.
  3. Melog masukan ke tabel employee_audit.

mari kita uji ini:

INSERT INTO employees (name, salary) VALUES ('jANE smith', 40000);
SELECT * FROM employees;
SELECT * FROM employee_audit;

Anda akan melihat bahwa nama Jane sekarang diatur secara proper, dia memiliki tanggal masuk kerja, dan ada entri di tabel audit!

Trigger Before Insert Menggunakan Program Klien

Meskipun kita telah menggunakan baris perintah MySQL, Anda juga dapat membuat dan menggunakan trigger melalui program klien seperti MySQL Workbench atau phpMyAdmin. Prosesnya hampir sama:

  1. Hubungkan ke basis data Anda.
  2. Buka window skrip SQL baru atau window queri.
  3. Salin dan tempel kode pembuatan trigger Anda.
  4. Jalankan skrip.

Berikut adalah tabel metode umum untuk membuat trigger di lingkungan yang berbeda:

Lingkungan Metode
MySQL CLI Ketik atau salin kode trigger secara langsung
MySQL Workbench Gunakan SQL Editor untuk menulis dan menjalankan kode trigger
phpMyAdmin Navigasikan ke tab 'Triggers' untuk tabel dan gunakan GUI atau tulis SQL
Kode Aplikasi Gunakan pustaka koneksi database untuk menjalankan SQL untuk pembuatan trigger

Ingat, tidak matter metode yang digunakan, sintaks SQL tetap sama!

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia trigger MySQL. Kita telah menutupi dasar-dasar, membuat trigger yang kuat, dan bahkan menyentuh bagaimana menggunakannya di berbagai lingkungan.

Dalam perjalanan basis data Anda, ingat bahwa trigger adalah penjaga diam dari data Anda. Mereka bekerja keras di belakang layar, memastikan data Anda tetap bersih, konsisten, dan patuh terhadap aturan bisnis Anda.

Teruslatih, eksperimen, dan paling penting, bersenang-senang dengan itu! Siapa tahu, mungkin suatu hari Anda akan menjadi yang mengajarkan generasi baru penggemar basis data tentang keajaiban trigger.

Selamat mengoding, dan may your queries always return the results you expect!

Credits: Image by storyset