百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql检查束缚怎么写
分享文章到:

mysql检查束缚怎么写

发布时间:08/01 来源:未知 浏览: 关键词:
MySQL检查束缚(CHECK)可以通过CREATETABLE或ALTERTABLE语句实现,依据会员现实的完备性请求来定义。 MySQL 检查束缚(CHECK)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现,依据会员现实的完备性请求来定义。它可以离别对列或表实施 CHECK 束缚。但是mysql手册里写的很分明:“所有的存储引擎均对CHECK子句进行剖析,但是忽略CHECK子句。”所以虽然可以这样写可并不会起到束缚作用。

举荐教程:MySQL教程。

在更新表数据的时候,系统会检查更新后的数据行可否知足 CHECK 束缚中的限制前提。MySQL 可以运用简略的表达式来实现 CHECK 束缚,也允许运用复杂的表达式作为限制前提,例如在限制前提中参加子查询。

注意:若将 CHECK 束缚子句置于所有列的定义以及主键束缚和外键定义之后,则这种束缚也称为基于表的 CHECK 束缚。该束缚可以同时对表中多个列设定限制前提。

在新建表时设定检查束缚

新建表时设定检查束缚的语律例则如下:

CHECK(<检查约束>)

在 test_db 数据库中新建 tb_emp7 数据表,请求 salary 字段值大于 0 且小于 10000,输入的 SQL 语句和运转效果如下所示。

mysql> CREATE TABLE tb_emp7
-> (
   -> id INT(11) PRIMARY KEY,
   -> name VARCHAR(25),
   -> deptId INT(11),
   -> salary FLOAT,
   -> CHECK(salary>0 AND salary<100),
   -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
   -> );
Query OK, 0 rows affected (0.37 sec)

在修改表时增加检查束缚

修改表时设定检查束缚的语律例则如下:

ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)

修改 tb_dept 数据表,请求 id 字段值大于 0,输入的 SQL 语句和运转效果如下所示。

mysql> ALTER TABLE tb_emp7
   -> ADD CONSTRAINT check_id
   -> CHECK(id>0);
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0

解决办法:运用触发器实现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('Kevin',120);

以上就是mysql检查束缚怎么写的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板