在一栏中插入唯一和非唯一值mysql

时间:2019-01-27 23:11:47

标签: mysql

我有一个名为board_positions的表,其中包含位置(例如president, vice-president, member, etc.)。我正在将这些位置的ID引用到另一个名为board_members的表中。

我正在苦苦挣扎的是如何使此表board_members仅接受一个president和许多members

我尝试使用unique约束来执行此操作,但是此约束使board_members接受每个成员的唯一位置。

任何想法都会帮助我。

提前谢谢。

1 个答案:

答案 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触发器看起来类似。