Created
May 31, 2026 20:00
-
-
Save thinkphp/aa285bf16394ac95a640b848eca94bca to your computer and use it in GitHub Desktop.
Only 'F' can be assigned Athletics_100m_Hurdles
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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