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