MySQL int类型的字段怎么限制范围(年龄限制在0--120之间)

解决方案 »

  1.   

    MYSQL中无法直接限制。
    你可以在触发器的BEFORE INSERT中检查。
      

  2.   

    -- mysql 的check约束只是一种装饰!只能用1楼的做法:触发器实现!
    -- 示例如下:
    mysql> create table user(
        -> uname varchar(30),
        -> sex char(5) CHECK (sex in( '男','女')),
        -> age int CHECK (age <= 120)
        -> );
    Query OK, 0 rows affected (0.06 sec)mysql> insert into user(uname,sex,age) values('luoyoumou','男',33);
    Query OK, 1 row affected (0.03 sec)mysql> insert into user(uname,sex,age) values('luoyoumou','男',133);
    Query OK, 1 row affected (0.03 sec)mysql> select * from user;
    +-----------+------+------+
    | uname     | sex  | age  |
    +-----------+------+------+
    | luoyoumou | 男   |   33 |
    | luoyoumou | 男   |  133 |
    +-----------+------+------+
    2 rows in set (0.01 sec)mysql> show create table user;
    +-------+--------------------------------------------------------------------------------------
    | Table | Create Table
    +-------+--------------------------------------------------------------------------------------
    | user  | CREATE TABLE `user` (
      `uname` varchar(30) default NULL,
      `sex` char(5) default NULL,
      `age` int(11) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------
    1 row in set (0.00 sec)