MySQL怎么使用check约束

在一些情况下,我们需要字段在指定范围的输入,例如:性别只能输入 '男'或者'女',余额只能大于0等条件,例如:可以要求 authors 表的 postcode 列只允许输入六位数字的邮政编码。我们除了在程序上控制以外,我们还能使用 CHECK 约束 来规范数据。然而:mysql所有的存储引擎均不支持check约束,MySQL会对...
MySQL怎么使用check约束
在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式(用于限制列中的值的范围)。在一些情况下,我们需要字段在指定范围的输入,例如:性别只能输入 '男'或者'女',余额只能大于0等条件,例如:可以要求 authors 表的 postcode 列只允许输入六位数字的邮政编码。我们除了在程序上控制以外,我们还能使用 CHECK 约束 来规范数据。然而:mysql所有的存储引擎均不支持check约束,MySQL会对check子句进行分析,但是在插入数据时会忽略,因此check并不起作用,因此实现对数据约束有两种方法:1.在mysql种约束,如使用enum类型或者触发器等。2.在应用程序里面对数据进行检查再插入。使用 ENUM 限制插入的值,但是这种方式只能用于离散型数据,对于范围数据则无能为力-- 创建一张测试表,规定sex字段只能是 ‘男’ 或者 ‘女’CREATE TABLE `user` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(18) COLLATE utf8_estonian_ci NOT NULL, `sex` ENUM('男','女') COLLATE utf8_estonian_ci DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci测试:INSERT INTO `user`(`name`,`sex`) VALUES('秀吉','秀吉');结果:错误代码: 1265Data truncated for column 'sex' at row 1如果我们需要限制范围内数据,例如:余额只能大于100这样的条件,我们可以使用触发器来实现。DELIMITER $$CREATE TRIGGER `test`.`remaining_BeforeInsert` BEFORE INSERT ON `test`.`user` FOR EACH ROW BEGIN IF `user`.`remaining` < 100 THEN SET `user`.`remaining` = 100; END IF; END$$DELIMITER ;2023-07-27
mengvlog 阅读 9 次 更新于 2025-07-20 06:39:43 我来答关注问题0
  • CREATE TABLE employees (id INT, name VARCHAR(30), age INT, salary DECIMAL(10,2) CHECK (salary > 0));在上面的示例中,我们定义了一个名为employees的表,其中的salary列必须大于零。当尝试插入或更新没有满足Check约束的数据时,MySQL将返回错误消息。因此,在使用Check约束时,应仔细考虑表和...

  •  仁昌爱娱乐 mysql中什么是CHECK约束啊?

    用sql命令语句写CHECK约束的格式为CHECK (约束条件)。如:CREATE TABLE 成绩信息(成绩编号 int NOT NULL PRIMARY KEY,学生编号 nchar(50) NOT NULL,考试编号 nchar(10) NOT NULL,课程编号nchar(10) NOT NULL,分数 nchar(10) NOT NULL CHECK (分数in(between '0' and '100'))...

  • 然而:mysql所有的存储引擎均不支持check约束,MySQL会对check子句进行分析,但是在插入数据时会忽略,因此check并不起作用,因此实现对数据约束有两种方法:1.在mysql种约束,如使用enum类型或者触发器等。2.在应用程序里面对数据进行检查再插入。使用 ENUM 限制插入的值,但是这种方式只能用于离散型数据,对...

  •  文暄生活科普 【数据库】CHECK是什么

    在创建或修改表时,可添加CHECK约束。创建表时示例:一个employees表包含两个约束,确保工龄不小于0,员工年龄不小于18。修改表时示例:在项目表中,添加约束确保结束日期晚于开始日期。删除约束则使用ALTER TABLE语句。示例:项目表约束结束日期必须晚于开始日期;复杂条件示例:产品表中,discount值在0到100...

  •  文暄生活科普 MYsql 怎么约束列的取值范围

    在MySQL中,约束列的取值范围通常通过创建check约束来实现。这种方式可以确保数据的完整性,避免不符合条件的数据被插入到指定列中。例如,如果需要限制一个性别列(sex)的取值只能为'男'或'女',可以在创建表tab10时使用如下SQL命令:CREATE TABLE tab10 (sex CHAR(2) CHECK(sex IN ('男','女')...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部