Using MySQL Triggers

This guide explains how to create and use MySQL triggers. Triggers are predefined rules attached to a table that activate automatically before or after SQL statements that insert, update, or delete data.

Triggers are useful for automating tasks such as updating values, enforcing rules, or logging changes.


Creating and Using Triggers

You can create triggers on any hosting.com server that uses MySQL.


Step 1: Set Up a Test Database

Create a database for testing (replace username with your account username):

CREATE DATABASE username_test;

 Note: Run SQL commands via MySQL CLI or phpMyAdmin.

Select the database:

USE username_test;

Step 2: Create a Table

Create a products table:

CREATE TABLE products (
  prod_id INT NOT NULL AUTO_INCREMENT,
  prod_name VARCHAR(20) NOT NULL,
  prod_cost FLOAT NOT NULL DEFAULT 0.0,
  prod_price FLOAT NOT NULL DEFAULT 0.0,
  PRIMARY KEY(prod_id)
);

Add sample data:

INSERT INTO products (prod_name, prod_cost, prod_price) 
VALUES 
  ('Basic Widget', 5.95, 8.35),
  ('Micro Widget', 0.95, 1.35),
  ('Mega Widget', 99.95, 140.00);

Step 3: Create a Trigger

This trigger automatically updates the product price when the cost changes:

DELIMITER $$
CREATE TRIGGER `updateProductPrice`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
  IF NEW.prod_cost < OLD.prod_cost THEN
    SET NEW.prod_price = NEW.prod_cost * 1.40;
  END IF;
END$$
DELIMITER ;

 Note:

  • DELIMITER $$ prevents MySQL from ending the trigger definition too soon.

  • DELIMITER ; restores the normal command delimiter.


Step 4: Use the Trigger

Update the cost of a product:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Verify the trigger effect:

SELECT * FROM products;

Result:

+---------+--------------+-----------+------------+
| prod_id | prod_name    | prod_cost | prod_price |
+---------+--------------+-----------+------------+
|       1 | Basic Widget |       7   |       9.8  |
|       2 | Micro Widget |     0.95  |      1.35  |
|       3 | Mega Widget  |    99.95  |    140     |
+---------+--------------+-----------+------------+

The updateProductPrice trigger automatically adjusted the Basic Widget's price based on the new cost.


More Information

Was this answer helpful? 0 Users Found This Useful (0 Votes)

Powered by WHMCompleteSolution