0

我想知道是否有办法在给定条件下限制 MySQL INSERT,例如:

我们有一张有项目的桌子,还有一张有员工的桌子。项目中允许的最大人数限制为 5。我们如何在 MySQL 中做到这一点?

在此先感谢,马利

4

3 回答 3

1

您必须阅读有关约束检查(或基于值)类型的信息。

CREATE TABLE tbl (
   ...
   numPeople INT CHECK (numPeople <= 5)
   ...
)

是的,对不起,检查约束在 MySQL 中不起作用

于 2013-06-18T07:56:56.450 回答
1

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
于 2013-06-18T08:05:24.413 回答
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 存储在与其关联的员工表中,则很容易修改)。

于 2013-06-18T10:18:31.117 回答