首页 > 数据库 > mysql教程 > MySQL CHECK 约束如何工作,以及如何确保旧版本和新版本中的数据验证?

MySQL CHECK 约束如何工作,以及如何确保旧版本和新版本中的数据验证?

Barbara Streisand
发布: 2025-01-10 10:32:42
原创
343 人浏览过

How Do MySQL CHECK Constraints Work, and How Can I Ensure Data Validation in Older and Newer Versions?

MySQL中的CHECK约束

在尝试向MySQL表添加CHECK约束时,当插入违反约束的数据时,可能会遇到意外行为。本文将深入探讨MySQL中CHECK约束的细微之处,并提供一个强制验证的解决方案。

在MySQL的早期版本(直到8.0.15)中,CHECK约束已定义但未强制执行。正如MySQL参考手册中所述:“CHECK子句由所有存储引擎解析但被忽略。”

MySQL 8.0.15及更早版本的解决方案

为了在缺乏原生CHECK约束支持的情况下强制执行数据验证,您可以创建一个触发器:

<code class="language-sql">DELIMITER //

CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer
FOR EACH ROW
BEGIN
  IF NEW.SD < 0 THEN
    SET NEW.SD = 0;
  END IF;
END //

DELIMITER ;</code>
登录后复制

此触发器将拦截任何INSERT语句,如果SD列的值小于0,则将其修改为0,确保约束得到维护。

MySQL 8.0.16及更高版本的CHECK约束

MySQL 8.0.16引入了对CHECK约束的全面支持。要在8.0.16或更高版本中定义CHECK约束,请使用以下语法:

<code class="language-sql">CREATE TABLE Customer (
  SD integer CHECK (SD > 0),
  Last_Name varchar (30),
  First_Name varchar(30)
);</code>
登录后复制

MySQL现在将强制执行约束,并阻止插入违反约束的数据。

以上是MySQL CHECK 约束如何工作,以及如何确保旧版本和新版本中的数据验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板