如何检查同一行中两列值的总和是否恰好为 100 作为 mysql 中的结果
How check if the sum of the values of two columns, in the same row have exactly 100 as result in mysql
我在 mysql (phpmyadmin) 中遇到了这个问题。我想检查 2 列的值是否为 100……例如我有这个 table
| BLABLABLA | BLABLABLA | VALUE1 | VALUE2 |
并且用户想要添加此值(bla、bla、20、30)..
我希望在这个 table 中不能添加 20 和 30,因为 20+30<>100..
我的代码是:
ALTER TABLE `partita` CHECK (`100` = (SELECT (`POSSESSO_PALLA_CASA`+`POSSESSO_PALLA_OSPITE`) FROM `partita`))
但这自然是错误的..我该怎么做?
谢谢大家!!!
如前所述,MySQL 不支持 CHECK
约束。每 MySQL Documentation 它说:
The CHECK clause is parsed but ignored by all storage engines
您应该使用 BEFORE INSERT
触发器作为替代方案,如下所示
DELIMITER //
CREATE TRIGGER sumcheck_before_insert
BEFORE INSERT
ON bla_table FOR EACH ROW
BEGIN
IF (NEW.VALUE1 + NEW.VALUE2 <> 100) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'can not insert data';
END IF
END; //
DELIMITER ;
我在 mysql (phpmyadmin) 中遇到了这个问题。我想检查 2 列的值是否为 100……例如我有这个 table
| BLABLABLA | BLABLABLA | VALUE1 | VALUE2 |
并且用户想要添加此值(bla、bla、20、30).. 我希望在这个 table 中不能添加 20 和 30,因为 20+30<>100.. 我的代码是:
ALTER TABLE `partita` CHECK (`100` = (SELECT (`POSSESSO_PALLA_CASA`+`POSSESSO_PALLA_OSPITE`) FROM `partita`))
但这自然是错误的..我该怎么做? 谢谢大家!!!
如前所述,MySQL 不支持 CHECK
约束。每 MySQL Documentation 它说:
The CHECK clause is parsed but ignored by all storage engines
您应该使用 BEFORE INSERT
触发器作为替代方案,如下所示
DELIMITER //
CREATE TRIGGER sumcheck_before_insert
BEFORE INSERT
ON bla_table FOR EACH ROW
BEGIN
IF (NEW.VALUE1 + NEW.VALUE2 <> 100) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'can not insert data';
END IF
END; //
DELIMITER ;