> 데이터 베이스 > MySQL 튜토리얼 > 검사 제약 조건을 사용할 수 없을 때 MySQL에서 데이터 무결성을 어떻게 시행할 수 있습니까?

검사 제약 조건을 사용할 수 없을 때 MySQL에서 데이터 무결성을 어떻게 시행할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-11-27 02:01:11
원래의
435명이 탐색했습니다.

How Can You Enforce Data Integrity in MySQL When Check Constraints Are Not Available?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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