嗯,基本上是标题。
我需要创建包含几列的新表(这很容易),但其中之一需要确保输入的值高于 21(这很困难)。我怎样才能做到这一点?
CREATE TABLE myBD.myTable
(`name` VARCHAR(90),
`age` INT --here I need to make sure it's above 21>,
PRIMARY KEY (`name`));
最佳答案
将触发器设置为 reject any value that does not abide by your constraint 。实际上有两个:一个用于插入,另一个用于更新。
例如:
DELIMITER $$
CREATE TRIGGER insert_check_greater_than_21
BEFORE INSERT ON tableName FOR EACH ROW
BEGIN
IF NEW.fieldName <= 21
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'fieldName must be greater than 21';
END IF;
END;
$$
CREATE TRIGGER update_check_greater_than_21
BEFORE UPDATE ON tableName FOR EACH ROW
BEGIN
IF NEW.fieldName <= 21
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'fieldName must be greater than 21';
END IF;
END;
$$
这可能不是定义触发器的最优雅的方式,但您可以在您最喜欢的 MySQL 引用中阅读有关它们的更多信息。
MySQL 确实有所谓的“检查约束”语法,but currently ignores them .
关于mysql - 如何创建一个值必须大于 x 的 int 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53178354/