我想知道是否有办法在给定条件下限制 MySQL INSERT,例如:
我们有一张有项目的桌子,还有一张有员工的桌子。项目中允许的最大人数限制为 5。我们如何在 MySQL 中做到这一点?
在此先感谢,马利
我想知道是否有办法在给定条件下限制 MySQL INSERT,例如:
我们有一张有项目的桌子,还有一张有员工的桌子。项目中允许的最大人数限制为 5。我们如何在 MySQL 中做到这一点?
在此先感谢,马利
employees
在不破坏关系(即有 5列)的情况下,您无法通过模式强制执行此约束。MySQL 不允许CHECK
约束。
您可以SELECT
在查询之前单独计算员工人数,也可以INSERT ... SELECT
在限制条件下使用。
INSERT INTO Employees
(employee, column, names)
SELECT
?, ?, ?
FROM
Projects
NATURAL JOIN Employees
WHERE
projID = ?
GROUP BY
projID
HAVING
COUNT(empID) < 5
可能在插入之前使用触发器检查用户数量:-
DELIMITER $$
CREATE TRIGGER project_before_insert_allow_only_five_employees
BEFORE INSERT ON project FOR EACH ROW
BEGIN
IF (SELECT COUNT(employee_id) FROM project WHERE project_id=NEW.project_id) > 4
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only 5 employees on a project';
END IF;
END;
未经测试,并假设您的项目表中每个员工都有一行(如果项目 ID 存储在与其关联的员工表中,则很容易修改)。