mysql搜检束缚怎样写【MySQL教程】,mysql
引荐教程:MySQL教程。
搜检束缚运用 CHECK 关键字,细致的语法花样以下:
CHECK <表达式>
个中:<表达式>指的就是 SQL 表达式,用于指定须要搜检的限制前提。
若将 CHECK 束缚子句置于表中某个列的定义以后,则这类束缚也称为基于列的 CHECK 束缚。
在更新表数据的时刻,体系会搜检更新后的数据行是不是满足 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搜检束缚怎样写的细致内容,更多请关注ki4网别的相干文章!