如何在mySQL Workbench上添加完整性检查



我是mySQL的新手,我想在数据库中添加一个完整性检查(或约束?对不起,我是意大利人(。让我解释一下:我有两张桌子

Workshop (location, numPlaces, numOperations)
Operation (idoperation, workLocation, ...)

numPlaces表示车间能够承担的最大操作次数。我创建了一个触发器,每当我在Operation中插入新记录时,引用到该特定位置的车间的numOperations将增加1。

现在我想做的是:当numOperations = numPlaces时,如果我试图向Operation插入新记录,系统必须告诉我不能。基本上,numOperations > numPlaces不可能

有办法做到这一点吗?很抱歉,如果我不能提供代码,但我真的不知道我应该去哪里创建这些类型的CHECKS。希望你能帮助我!

要做到这一点,您必须为车间设置正确的位置数量。你应该有一个程序,减少操作次数,这样你就可以在一个车间中进入新的操作

CREATE TABLE Workshop 
(location Text, numPlaces int , numOperations int
)
INSERT INTO Workshop VALUES ('A',9,8)
CREATE TABLE Operation (idoperation int, workLocation Text)
CREATE TRIGGER before_Operation_insert
BEFORE INSERT
ON Operation FOR EACH ROW
BEGIN
DECLARE Placescount_ INT;
DECLARE Operationscount_ INT;

SELECT numPlaces, numOperations
INTO Placescount_,Operationscount_
FROM Workshop WHERE location = NEW.workLocation;

IF Placescount_ < Operationscount_ THEN
UPDATE Workshop
SET numOperations = numOperations + 1  WHERE location=new.workLocation ;
ELSE
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Maximum Number of Operarations reached in location ';
END IF; 
END
INSERT INTO Operation VALUES (1,'A')
位置达到的最大操作数

db<gt;小提琴这里

最新更新