>데이터 베이스 >MySQL 튜토리얼 >mysql 검사 제약 조건을 작성하는 방법

mysql 검사 제약 조건을 작성하는 방법

(*-*)浩
(*-*)浩원래의
2019-05-10 11:49:0114002검색

MySQL 검사 제약 조건(CHECK)은 사용자의 실제 무결성 요구 사항에 따라 정의된 CREATE TABLE 또는 ALTER TABLE 문을 통해 구현할 수 있습니다. 열이나 테이블에 개별적으로 CHECK 제약 조건을 적용할 수 있습니다. 그러나 mysql 매뉴얼에는 "모든 스토리지 엔진은 CHECK 절을 분석하지만 CHECK 절은 무시한다"라고 매우 명확하게 적혀 있다. 따라서 이렇게 작성할 수는 있지만 제한적인 효과는 없다.

권장 튜토리얼: MySQL 튜토리얼

mysql 검사 제약 조건을 작성하는 방법

제약 조건을 확인하려면 CHECK 키워드를 사용하세요. 구문 형식은 다음과 같습니다.

CHECK <表达式>

그 중 은 확인해야 할 자격 조건을 지정하는 데 사용되는 SQL 표현식을 나타냅니다.
테이블에서 열 정의 뒤에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.