MySQL에서 트리거를 사용하여 삽입 및 업데이트 방지
MySQL에는 검사 제약 조건을 적용하는 기능이 부족하므로 이를 방지하기 위한 대체 방법을 모색해야 합니다. 무단 데이터 수정.
foo 테이블의 에이전시 속성은 1에서 5 사이의 값을 취합니다.
예제 코드 조각에 표시된 것처럼 트리거를 사용하여 이 제약 조건을 위반하는 삽입 또는 업데이트를 가로채려고 시도할 수 있습니다. 그러나 단순히 if 조건 뒤의 명령문을 생략하면(#Do Nothing?으로 표시됨) 작업이 발생하는 것을 방지할 수 없습니다.
구조를 위한 SIGNAL 키워드
MySQL SIGNAL 구문이 솔루션을 제공합니다. 이를 통해 사용자 정의 오류를 발생시키고 의미 있는 오류 메시지를 제공할 수 있습니다. 개선된 버전의 트리거는 다음과 같습니다.
create trigger agency_check before insert on foo for each row begin if (new.agency < 1 or new.agency >5) then SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Agency must be between 1 and 5'; end if end
이제 이 트리거는 유효하지 않은 대행사 값이 있는 행을 삽입하거나 업데이트하려고 시도하는 경우 지정된 메시지와 함께 오류를 발생시킵니다. 오류는 MySQL 클라이언트에 의해 차단되어 사용자에게 표시됩니다.
결론
트리거 내의 SIGNAL 키워드를 활용하여 MySQL의 검사 부족 문제를 효과적으로 극복했습니다. 제약 조건을 적용하고 무단 데이터 조작을 방지하는 메커니즘을 제공합니다. 이 접근 방식은 데이터 무결성을 보장하고 foo 테이블에 잘못된 데이터가 추가되거나 수정되는 것을 방지합니다.
위 내용은 검사 제약 조건을 사용할 수 없을 때 MySQL에서 데이터 무결성을 어떻게 시행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!