MySQL Procedures, Triggers, and Events Cheatsheet

stored procedures, stored functions, delimiters, call, triggers, and scheduled events in MySQL.

View
StandardDetailedCompact
Export
Copy the compact sheet, download it, or print it.
Download
`D` dense toggle · `C` copy all
## stored procedures and functions
Change the statement delimiter
DELIMITER $$
CREATE PROCEDURE get_user_by_email(IN p_email VARCHAR(255))
BEGIN
  SELECT id, email, full_name
  FROM users
  WHERE email = p_email;
END $$
DELIMITER ;

# Define routines containing semicolons.

Call a stored procedure
CALL get_user_by_email('ava@example.com');

# Execute a procedure with input arguments.

Create a scalar function
DELIMITER $$
CREATE FUNCTION full_label(p_first VARCHAR(100), p_last VARCHAR(100))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
  RETURN CONCAT(p_first, ' ', p_last);
END $$
DELIMITER ;

# Return a computed value from SQL code.

List stored procedures
SHOW PROCEDURE STATUS WHERE Db = 'app_db';

# Display procedures visible in a schema.

Show procedure definition
SHOW CREATE PROCEDURE get_user_by_email\G

# Display the CREATE PROCEDURE statement for an existing routine.

## triggers and events
Create a BEFORE INSERT trigger
DELIMITER $$
CREATE TRIGGER trg_users_before_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
  SET NEW.email = LOWER(NEW.email);
END $$
DELIMITER ;

# Normalize row data before insert.

List triggers
SHOW TRIGGERS;

# Display triggers defined in the current schema.

Create a scheduled event
CREATE EVENT ev_purge_expired_sessions
ON SCHEDULE EVERY 1 DAY
DO
  DELETE FROM sessions WHERE expires_at < NOW();

# Run a periodic cleanup task inside MySQL.

List events in a database
SHOW EVENTS FROM app_db;

# Inspect scheduled events.

Drop a trigger
DROP TRIGGER IF EXISTS trg_users_before_insert;

# Remove a trigger definition.

Recommended next

No recommendations yet.