The MySQL trigger is a database object that is associated with a table. It will be activated when a defined action is executed for the table. The trigger can be executed when you run one of the following MySQL statements on the table: INSERT, UPDATE and DELETE and it can be invoked before or after the event.
You can find detailed explanation of the trigger functionality and syntax in this article.
The main requirement for running such MySQL Triggers is having MySQL SUPERUSER privileges.
Such privileges can be granted on the VPS and Dedicated Servers. Granting SUPERUSER MySQL privileges to a user hosted on a Shared Server is not possible due to our server setup.
Here is an example of a MySQL trigger:
- First we will create the table for which the trigger will be set via SSH:
|mysql> CREATE TABLE people (age INT, name varchar(150));|
- Next we will define the trigger. It will be executed before every INSERT statement for the people table:
|mysql> delimiter //mysql> CREATE TRIGGER agecheck BEFORE INSERT ON people FOR EACH ROW IF NEW.age < 0 THEN SET NEW.age = 0; END IF;// Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;|
- We will insert two records to check the trigger functionality.
|mysql> INSERT INTO people VALUES (-20, ‘Adam’), (30, ‘Mark’);Query OK, 2 rows affected (0.00 sec)Records: 2 Duplicates: 0 Warnings: 0|
- At the end we will check the result.
|mysql> SELECT * FROM people;+——-+——-+| age | name |+——-+——-+| 0 | Adam || 30 | Mark |+——-+——-+2 rows in set (0.00 sec)|