> 데이터 베이스 > MySQL 튜토리얼 > MySQL CHECK 제약 조건은 어떻게 작동하며, 이전 버전과 최신 버전에서 데이터 유효성 검사를 어떻게 보장할 수 있습니까?

MySQL CHECK 제약 조건은 어떻게 작동하며, 이전 버전과 최신 버전에서 데이터 유효성 검사를 어떻게 보장할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-10 10:32:42
원래의
288명이 탐색했습니다.

How Do MySQL CHECK Constraints Work, and How Can I Ensure Data Validation in Older and Newer Versions?

MySQL의 CHECK 제약 조건

MySQL 테이블에 CHECK 제약 조건을 추가하려고 할 때 제약 조건을 위반하는 데이터를 삽입하면 예기치 않은 동작이 발생할 수 있습니다. 이 기사에서는 MySQL의 CHECK 제약 조건의 미묘함을 자세히 살펴보고 유효성 검사를 시행하는 솔루션을 제공합니다.

이전 버전의 MySQL(8.0.15까지)에서는 CHECK 제약 조건이 정의되었으나 시행되지 않았습니다. MySQL 참조 매뉴얼에 명시된 대로: "CHECK 절은 모든 스토리지 엔진에서 구문 분석되지만 무시됩니다."

MySQL 8.0.15 이하용 솔루션

기본 CHECK 제약 조건이 지원되지 않는 경우 데이터 유효성 검사를 강제하려면 트리거를 생성하면 됩니다.

<code class="language-sql">DELIMITER //

CREATE TRIGGER trig_sd_check BEFORE INSERT ON Customer
FOR EACH ROW
BEGIN
  IF NEW.SD < 0 THEN
    SET NEW.SD = 0;
  END IF;
END //

DELIMITER ;</code>
로그인 후 복사
이 트리거는 모든 INSERT 문을 가로채고 SD 열의 값이 0보다 작은 경우 0으로 수정되어 제약 조건이 유지되도록 합니다.

MySQL 8.0.16 이상 버전의 제약 조건을 확인하세요

MySQL 8.0.16에서는 CHECK 제약 조건을 완벽하게 지원합니다. 8.0.16 이상에서 CHECK 제약 조건을 정의하려면 다음 구문을 사용하세요.

<code class="language-sql">CREATE TABLE Customer (
  SD integer CHECK (SD > 0),
  Last_Name varchar (30),
  First_Name varchar(30)
);</code>
로그인 후 복사
이제 MySQL은 제약 조건을 적용하고 제약 조건을 위반하는 데이터의 삽입을 방지합니다.

위 내용은 MySQL CHECK 제약 조건은 어떻게 작동하며, 이전 버전과 최신 버전에서 데이터 유효성 검사를 어떻게 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿