Skip to content

Instantly share code, notes, and snippets.

@thinkphp
Created May 31, 2026 20:00
Show Gist options
  • Select an option

  • Save thinkphp/aa285bf16394ac95a640b848eca94bca to your computer and use it in GitHub Desktop.

Select an option

Save thinkphp/aa285bf16394ac95a640b848eca94bca to your computer and use it in GitHub Desktop.
Only 'F' can be assigned Athletics_100m_Hurdles
DELIMITER $$
CREATE TRIGGER trg_athlete_hurdles_gender_check
BEFORE INSERT ON Athlete_Profile
FOR EACH ROW
BEGIN
DECLARE v_gender ENUM('M', 'F');
-- Retrieve the player's gender from the Player supertype
SELECT Gender
INTO v_gender
FROM Player
WHERE Player_ID = NEW.Player_ID;
-- Only 'F' can be assigned Athletics_100m_Hurdles
IF NEW.Athlete_Preferred_Category = 'Athletics_100m_Hurdles'
AND v_gender != 'F' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT =
'Gender violation: Athletics_100m_Hurdles is restricted to female athletes';
END IF;
-- Only 'M' can be assigned Athletics_110m_Hurdles
IF NEW.Athlete_Preferred_Category = 'Athletics_110m_Hurdles'
AND v_gender != 'M' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT =
'Gender violation: Athletics_110m_Hurdles is restricted to male athletes';
END IF;
END $$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER trg_athlete_hurdles_gender_check_update
BEFORE UPDATE ON Athlete_Profile
FOR EACH ROW
BEGIN
DECLARE v_gender ENUM('M', 'F');
-- Retrieve the player's gender from the Player supertype
SELECT Gender
INTO v_gender
FROM Player
WHERE Player_ID = NEW.Player_ID;
-- Only 'F' can be assigned Athletics_100m_Hurdles
IF NEW.Athlete_Preferred_Category = 'Athletics_100m_Hurdles'
AND v_gender != 'F' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT =
'Gender violation: Athletics_100m_Hurdles is restricted to female athletes';
END IF;
-- Only 'M' can be assigned Athletics_110m_Hurdles
IF NEW.Athlete_Preferred_Category = 'Athletics_110m_Hurdles'
AND v_gender != 'M' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT =
'Gender violation: Athletics_110m_Hurdles is restricted to male athletes';
END IF;
END $$
DELIMITER ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment