+-
MySQL表中的常量列值
我有一个 MySQL表.我想将表的列值设置为常量整数.我怎样才能做到这一点?
最佳答案

Unfortunately MySQL does not support SQL check constraints. You can
define them in your DDL query for compatibility reasons but they are
just ignored. You can create BEFORE INSERT and BEFORE UPDATE triggers
which either cause an error or set the field to its default value when
the requirements of the data are not met.

所以在这里你可以通过MYSQL TRIGGER找到解决方法.

样本表:

DROP TABLE IF EXISTS `constantvaluetable`;
CREATE TABLE `constantvaluetable` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `constValue` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB;

触发:

DROP TRIGGER IF EXISTS trigger_const_check;
delimiter //
CREATE TRIGGER trigger_const_check BEFORE INSERT ON constantvaluetable 
    FOR EACH ROW 
  BEGIN 
        IF NEW.constValue <> 71 THEN 
        SIGNAL SQLSTATE '45000' SET message_text ='Only allowed value is 71';
        END IF; 
  END //
delimiter ;

测试:

INSERT INTO constantvaluetable(constValue) VALUES(71);

INSERT INTO constantvaluetable(constValue) VALUES(66);

结果:

第一个insert语句将成功.

第二个插入语句将失败.并将显示以下错误消息:

[Err] 1644 – Only allowed value is 71

注意:假设您的CONSTANT值为71.

点击查看更多相关文章

转载注明原文:MySQL表中的常量列值 - 乐贴网