mysql 5.7 check约束_mysql check 约束
时间: 2023-12-19 12:51:22 浏览: 26
MySQL 5.7 支持 CHECK 约束,但它的实现方式与其他数据库系统有些不同。在 MySQL 中,CHECK 约束不是直接定义在表上,而是通过触发器实现。
以下是一个示例:
首先,创建一个表:
```
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10)
);
```
然后,创建一个触发器来实现 CHECK 约束:
```
CREATE TRIGGER check_age_gender
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
IF NEW.age < 0 OR NEW.age > 150 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age must be between 0 and 150';
END IF;
IF NEW.gender NOT IN ('male', 'female') THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Gender must be either male or female';
END IF;
END;
```
这个触发器会在插入数据之前进行检查,如果 age 或 gender 不符合要求,则会抛出一个异常,阻止数据被插入。
请注意,使用 CHECK 约束可能会对性能产生一定影响,因为每次插入数据都要执行触发器中的检查。因此,应该谨慎使用 CHECK 约束,仅在必要时才使用。