概述
在MySQL中,提供了CHECK检查约束用来指定某列的可取值的范围,它通过限制输入到列中的值来强制域的完整性。但是目前的MySQL版本只是对CHECK约束进行了分析处理,但会被直接忽略,并不会报错。
示例:创建学生信息表tb_student时,将年龄(age)的值设置在1至100之间的数值。
-- 学生信息表
CREATE TABLE tb_student
(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30),
age INT NOT NULL CHECK(age>0 AND age<100)
);
上述示例中,虽然给年龄(age)字段设置了CHECK检查约束,但是仍然可以往该数据表中添加不符合要求的年龄数组,例如:-1或者120。
解决方法:使用触发器实现CHECK检查约束的功能。
(1)创建tb_student(学生信息表)。
-- 创建学生信息表
CREATE TABLE tb_student
(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30),
age INT NOT NULL
);
(2)创建检查年龄(age)字段是否有效的触发器。
-- 创建触发器
CREATE TRIGGER trg_tb_student_insert_check BEFORE INSERT
ON tb_student FOR EACH ROW
BEGIN
DECLARE msg varchar(100);
IF NEW.age <= 0 OR NEW.age >= 100
THEN
SET msg = CONCAT('您输入的年龄值:',NEW.age,' 为无效的年龄,请输入0到100以内的有效数字。');
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;
END IF;
END;
(3)编写测试语句。
INSERT INTO tb_student(name,age) VALUES('pan_junbiao的博客',120);
执行结果:
最后
以上就是仁爱棒棒糖为你收集整理的MySQL使用触发器实现CHECK检查约束的功能的全部内容,希望文章能够帮你解决MySQL使用触发器实现CHECK检查约束的功能所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复