MySQL 从 8.0.16 版本开始支持 CHECK
约束功能。接下来,我通过一个案例来演示这一点。
https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html
我们创建一个名为 scores 的表,表中的 CHECK
约束确保 score 字段的值不能为 0。如果尝试插入值为 0 的记录,MySQL 将会抛出错误。
表结构如下:
代码语言:sql复制CREATE TABLE scores (
id INT AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(100) NOT NULL,
score DECIMAL(5,2) NOT NULL,
CONSTRAINT check_score_not_zero CHECK (score != 0)
);
以下 SQL 语句会成功执行:
代码语言:sql复制INSERT INTO scores (student_name, score) VALUES ('张三', 80.5);
而以下 SQL 语句会因 score 值为 0 而失败:
代码语言:sql复制INSERT INTO scores (student_name, score) VALUES ('李四', 0);
这样,CHECK
约束可以有效地确保表中数据的完整性和正确性。