MySQL使用触发器如何实现CHECK检查约束的功能,
目录
- MySQL触发器实现CHECK检查约束
- 示例
- 解决方法
- 总结
MySQL触发器实现CHECK检查约束
在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);
执行结果:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。
您可能感兴趣的文章:- MySQL使用触发器实现数据自动更新的应用实例
- MySQL触发器实现两表数据同步的代码详解
- mysql触发器同步表的数据方式
- mysql触发器中包含select语句问题
- Mysql触发器语法解读(附带简单实用例子)
- MySQL触发器之判断更新操作前后数据是否改变
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。