我想知道是否有办法在给定条件下限制MySQL INSERT,例如:
我们有一个包含项目的表和另一个包含员工的表。项目中允许的最大人数限制为5.我们如何在MySQL中执行此操作?
提前致谢, 马利
答案 0 :(得分:1)
您必须阅读constraint,check(或基于值)类型。
CREATE TABLE tbl (
...
numPeople INT CHECK (numPeople <= 5)
...
)
是的,抱歉,检查约束在MySQL中不起作用
答案 1 :(得分:1)
您不能通过架构强制执行此约束而不会破坏关系(即有5 employees
列)。 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
答案 2 :(得分:0)
在插入之前可能使用触发器来检查用户数量: -
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存储在employees表中,那么很容易修改,以便与之关联)。