Course
Show Trigger
MySQL Tutorial
This SQL tutorial is structured for beginners to guide them from the foundational concepts to advanced data manipulation and querying techniques in SQL. By the end of this tutorial, you will have developed a robust understanding of SQL, equipping you with the knowledge to efficiently manage and analyze data across various database systems. This guide sets the stage for your growth into a skilled data professional, ready to tackle complex data challenges and contribute to the field of data analysis and database management.
SHOW TRIGGERS
Triggers in MySQL are stored programs similar to procedures. These can be created on a table, schema, view and database that are associated with an event and whenever an event occurs the respective trigger is invoked.
MySQL provides a statement to list out all the existing triggers present in a database. Knowing the trigger information can be useful while creating new triggers, so that a user wouldn't use the same name for multiple triggers.
Show Triggers in MySQL
The SHOW TRIGGERS Statement is used in MySQL to display information about all the triggers defined in the current database.
Syntax
Following is the syntax of the MySQL SHOW TRIGGERS Statement −
SHOW TRIGGERS[{FROM | IN} db_name][LIKE 'pattern' | WHERE expr]
Example
In this example, we are creating a table named STUDENT using the query below −
CREATE TABLE STUDENT( Name varchar(35), Age INT, Score INT);
Following query creates a trigger sample_trigger which will set the score value to 0 if you enter a negative score value into the table.
DELIMITER //CREATE TRIGGER sample_trigger BEFORE INSERT ON STUDENT FOR EACH ROWBEGIN IF NEW.score < 0 THEN SET NEW.score = 0;END IF;END //DELIMITER ;
Assume we have created another trigger using the AFTER clause −
DELIMITER //CREATE TRIGGER testTriggerAFTER UPDATE ON StudentFOR EACH ROWBEGIN INSERT INTO Student SET action = 'update', Name = OLD.Name, Age = OLD.age, Score = OLD.score;END;END //
DELIMITER ;
Following query shows the existing triggers in the current database −
SHOW TRIGGERS \G;
Output
The list of triggers will be displayed as follows −
*************************** 1. row ***************************Trigger: sample_triggerEvent: INSERTTable: studentStatement: BEGIN IF NEW.score < 0 THEN SET NEW.score = 0; END IF; ENDTiming: BEFORECreated: 2021-05-12 19:08:04.50sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTIONDefiner: root@localhostcharacter_set_client: utf8mb4collation_connection: utf8mb4_0900_ai_ci Database Collation: utf8mb4_0900_ai_ci*************************** 2. row ***************************Trigger: testTriggerEvent: UPDATETable: studentStatement: INSERT INTO Student SET Name = OLD.Name, Age = OLD.age, Score = OLD.scoreTiming: AFTERCreated: 2021-05-12 19:10:44.49sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTIONDefiner: root@localhostcharacter_set_client: utf8mb4collation_connection: utf8mb4_0900_ai_ciDatabase Collation: utf8mb4_0900_ai_ci2 rows in set (0.00 sec)
With FROM or IN Clause
You can retrieve the information of triggers from a specific database using the FROM clause.
Example
Assume that the current database is named demo. Following query shows the triggers present in the database demo −
SHOW TRIGGERS FROM demo\G
You can also use the IN clause instead of FROM, to get the same output.
SHOW TRIGGERS IN demo\G
Output
The existing triggers present in the demo database −
*************************** 1. row *************************** Trigger: sample_trigger Event: INSERT Table: student Statement: BEGIN IF NEW.score < 0 THEN SET NEW.score = 0;END IF;END Timing: BEFORE Created: 2023-09-29 11:42:33.58 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION Definer: root@localhostcharacter_set_client: cp850collation_connection: cp850_general_ci Database Collation: utf8mb4_0900_ai_ci*************************** 2. row *************************** Trigger: testTrigger Event: UPDATE Table: student Statement: BEGIN INSERT INTO Student SET action = 'update', Name = OLD.Name, Age = OLD.age, Score = OLD.score;END Timing: AFTER Created: 2023-09-29 11:43:10.27 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION Definer: root@localhostcharacter_set_client: cp850collation_connection: cp850_general_ci Database Collation: utf8mb4_0900_ai_ci2 rows in set (0.00 sec)
With WHERE Clause
You can use the WHERE clause of the SHOW TRIGGERS statements to retrieve info about the triggers which match the specified condition.
Example
Following query retrieves the triggers in the current database whose event is update −
SHOW TRIGGERS FROM demo WHERE Event = 'UPDATE' \G;
Output
The required list of triggers is displayed as follows −
*************************** 1. row *************************** Trigger: testTrigger Event: UPDATE Table: student Statement: BEGIN INSERT INTO Student SET action = 'update', Name = OLD.Name, Age = OLD.age, Score = OLD.score;END Timing: AFTER Created: 2023-09-29 11:43:10.27 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION Definer: root@localhostcharacter_set_client: cp850collation_connection: cp850_general_ci Database Collation: utf8mb4_0900_ai_ci1 row in set (0.00 sec)
Showing Trigger Using Client Program
We can also Show a trigger using a client program.
Syntax
PHPNodeJSJavaPython
To show a trigger through a PHP program, we need to execute the SHOW TRIGGERS statement using the mysqli function query() as follows −
$sql = "Show TRIGGER";$mysqli->query($sql);
Example
Following are the programs −
PHPNodeJSJavaPython
$dbhost = 'localhost';$dbuser = 'root';$dbpass = 'password';$db = 'TUTORIALS';$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);if ($mysqli->connect_errno) { printf("Connect failed: %s", $mysqli->connect_error); exit();}printf('Connected successfully.');
// Create a trigger$sql = "CREATE TRIGGER testTrigger AFTER UPDATE ON Student FOR EACH ROW INSERT INTO Student SET action = 'update', Name = OLD.Name, age = OLD.age, score = OLD.score";
if ($mysqli->query($sql)) { printf("Trigger created successfully...!");} else { printf("Trigger creation failed: %s", $mysqli->error);}
// Show created trigger details$sql = "SHOW TRIGGERS"; $res = $mysqli->query($sql);if ($res) { while ($row = $res->fetch_assoc()) { // Print trigger details foreach ($row as $key => $value) { printf("%s: %s", $key, $value); } printf(""); } $res->free();} else { printf("Failed to retrieve triggers: %s", $mysqli->error);}$mysqli->close();
Output
The output obtained is as follows −
Connected successfully.Trigger created successfully...!Trigger: testTriggerEvent: UPDATETable: studentStatement: INSERT INTO Student SET action = 'update', Name = OLD.Name, age = OLD.age, score = OLD.scoreTiming: AFTERCreated: 2023-09-08 12:16:27.54sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONDefiner: root@localhostcharacter_set_client: utf8mb4collation_connection: utf8mb4_0900_ai_ciDatabase Collation: utf8mb4_0900_ai_ci