집 >데이터 베이스 >MySQL 튜토리얼 >MySQL CHECK 제약 조건은 어떻게 작동하며, 이전 버전과 최신 버전에서 데이터 유효성 검사를 어떻게 보장할 수 있습니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!