트리거가 MySQL에서 INSERT 작업을 방지할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-11-13 16:05:02
원래의
690명이 탐색했습니다.

Can Triggers Prevent INSERT Operations in MySQL?

트리거로 인해 INSERT가 실패할 수 있나요?

MySQL에서 BEFORE INSERT와 같은 트리거는 테이블에 데이터를 삽입하기 전에 데이터를 수정할 수 있습니다. 그러나 유효성 검사 오류로 인해 INSERT 작업이 성공하는 것을 막을 수 있는지 즉시 알 수는 없습니다.

MySQL Trickery

그러나 블로그 게시물에서는 이 제한을 피하십시오. 예를 들어, MySQL 5.0 또는 5.1 트리거는 존재하지 않는 열에 대한 액세스를 강제로 시도하여 오류를 트리거하고 INSERT 작업을 중단할 수 있습니다.

트리거 예시

이 트릭을 사용하는 예제 트리거는 다음과 같습니다.

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;
로그인 후 복사

다른 RDBMS

MySQL의 솔루션에는 해결 방법이 포함되어 있지만 다른 RDBMS는 INSERT 실패에 대한 보다 직접적인 방법을 제공할 수 있습니다.

THROW EXCEPTION

예를 들어 Microsoft SQL Server에는 THROW EXCEPTION 구문이 포함되어 있습니다. 이를 통해 트리거는 INSERT 작업을 중단할 수 있는 예외를 발생시킬 수 있습니다.

db2

db2는 INSERT를 종료할 수 있는 사용자 정의 조건을 알리는 SIGNAL 문을 지원합니다.

참고: 이러한 기술은 INSERT에 실패하는 트리거의 능력을 보여 주지만 주의를 기울이고 성능에 미치는 영향을 고려하는 것이 중요합니다.

위 내용은 트리거가 MySQL에서 INSERT 작업을 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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