Mysql 将最大值设置为列

Mysql 将最大值设置为列,mysql,Mysql,我有一个表,它有一个名为age的列(int类型)。此列应包含最大值50。如果超过,则不应更新该行 表示此列应取0到50之间的值 如果我尝试将其更新为51,那么这应该是不允许的 有谁能帮忙吗 试试这个: CREATE TRIGGER check_trigger BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.age<0 OR NEW.age>50 THEN CALL `Error: Wrong values fo

我有一个表,它有一个名为age的列(int类型)。此列应包含最大值50。如果超过,则不应更新该行

表示此列应取0到50之间的值

如果我尝试将其更新为51,那么这应该是不允许的

有谁能帮忙吗

试试这个:

CREATE TRIGGER check_trigger
  BEFORE INSERT
  ON table
  FOR EACH ROW
BEGIN
  IF NEW.age<0 OR NEW.age>50 THEN
    CALL `Error: Wrong values for age`; -- this trick will throw an error
  END IF;
END
创建触发器检查\u触发器
插入前
桌上
每行
开始
如果是新的,那么
调用“错误:年龄的值错误”;--这个把戏会出错
如果结束;
结束
创建表格测试(
age tinyint not null)引擎=myisam;
分隔符//
如果存在最大值,则丢弃触发器//
在测试插入之前创建触发器最大值
每行
开始
如果new.age<0或new.age>50,则
设置new.age=null;
如果结束;
结束//
定界符;
插入测试(年龄)值(100);

为更新做同样的事情。

您可以使用
检查
约束:

CREATE TABLE person (
Name VARCHAR(80), 
Age  INT CHECK (Age BETWEEN 5 and 50));

那么为什么使用错误的数据类型呢?ENUM是您需要的,而不是INT。我认为触发器对您来说是正确的……对于@Gnanendra:@nick rulez,如果用户插入了错误的内容,请将age设置为null;我的例子提出了一个错误。用你认为最适合你的方式@Gnanendra:看看这篇有趣的文章@Gnanendra:在给你的答案中接受一个怎么样?;)更糟糕的是,MySQL允许您使用此定义创建一个表,但解析器会忽略该约束,而不会将其添加到表中!有人知道在任何MySQL db引擎的未来版本中是否有添加
CHECK
约束的计划吗?
CREATE TABLE person (
Name VARCHAR(80), 
Age  INT CHECK (Age BETWEEN 5 and 50));