我有一个名为board_positions
的表,其中包含位置(例如president, vice-president, member, etc.
)。我正在将这些位置的ID引用到另一个名为board_members
的表中。
我正在苦苦挣扎的是如何使此表board_members
仅接受一个president
和许多members
?
我尝试使用unique
约束来执行此操作,但是此约束使board_members
接受每个成员的唯一位置。
任何想法都会帮助我。
提前谢谢。
答案 0 :(得分:1)
解决方案是编写一个触发器,以检查总统职位的数量。
例如:
DELIMITER $$
CREATE TRIGGER before_board_members_insert
BEFORE INSERT ON board_members
FOR EACH ROW
BEGIN
DECLARE president_id INT;
DECLARE presidents_count INT;
SET president_id = 1; -- change here to reflect the actual value
IF (NEW.position_id = president_id) THEN
SELECT COUNT(*) INTO presidents_count
FROM board_members
WHERE position_id = president_id;
IF (presidents_count >= 1) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Maximum number of presidents reached.';
END IF;
END IF;
END$$
DELIMITER ;
UPDATE触发器看起来类似。