집 >데이터 베이스 >MySQL 튜토리얼 >mysql 검사 제약 조건을 작성하는 방법
MySQL 검사 제약 조건(CHECK)은 사용자의 실제 무결성 요구 사항에 따라 정의된 CREATE TABLE 또는 ALTER TABLE 문을 통해 구현할 수 있습니다. 열이나 테이블에 개별적으로 CHECK 제약 조건을 적용할 수 있습니다. 그러나 mysql 매뉴얼에는 "모든 스토리지 엔진은 CHECK 절을 분석하지만 CHECK 절은 무시한다"라고 매우 명확하게 적혀 있다. 따라서 이렇게 작성할 수는 있지만 제한적인 효과는 없다.
권장 튜토리얼: MySQL 튜토리얼
제약 조건을 확인하려면 CHECK 키워드를 사용하세요. 구문 형식은 다음과 같습니다.
CHECK <表达式>
그 중
테이블에서 열 정의 뒤에 CHECK 제약 조건 절을 배치하는 경우 이 제약 조건을 열 기반 CHECK 제약 조건이라고도 합니다.
테이블 데이터를 업데이트할 때 시스템은 업데이트된 데이터 행이 CHECK 제약 조건의 제약 조건을 충족하는지 확인합니다. MySQL은 간단한 표현식을 사용하여 CHECK 제약 조건을 구현할 수 있으며, 한정 조건에 하위 쿼리를 추가하는 등 복잡한 표현식을 한정 조건으로 사용할 수도 있습니다.
참고: 모든 열의 정의와 기본 키 제약 조건 및 외래 키 정의 뒤에 CHECK 제약 조건 절이 배치되는 경우 이 제약 조건을 테이블 기반 CHECK 제약 조건이라고도 합니다. 이 제약 조건은 테이블의 여러 열에 동시에 제한을 설정할 수 있습니다.
테이블 생성 시 검사 제약 조건 설정
테이블 생성 시 검사 제약 조건 설정 구문 규칙은 다음과 같습니다.
CHECK(<检查约束>)#🎜🎜 #test_db 데이터베이스에 tb_emp7 데이터 테이블을 생성합니다. 급여 필드 값은 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 검사 제약 조건을 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!