Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 트리거와 함께 SIGNAL 문을 어떻게 사용할 수 있습니까?


사실, MySQL SIGNAL 문은 예기치 않은 상황을 처리하고 필요한 경우 애플리케이션을 정상적으로 종료하기 위한 오류 처리 메커니즘입니다. 기본적으로 핸들러에 오류 정보를 제공합니다. 기본 구문은 다음과 같습니다 -

SIGNAL SQLSTATE | condition_value
[SET signal_information_item = value_1,[, signal_information_item] = value_2,
etc;]

여기서 SIGNAL 키워드는 SQLSTATE 값 또는 DECLARE CONDITION 문에 의해 선언된 조건 이름입니다. SIGNAL문은 항상 SQLSTATE 값 또는 SQLSTATE 값으로 정의된 명명된 조건을 지정해야 합니다. The SIGNAL 문의 SQLSTATE 값은 5자의 영숫자 코드로 구성됩니다. '00'으로 자체 SQLSTATE 코드를 시작해서는 안 됩니다. 이러한 값은 성공을 나타내고 오류 신호에 유효하지 않기 때문입니다. 값이 유효하지 않으면 잘못된 SQLSTATE 오류가 발생합니다. catch-all 오류 처리를 위해 "처리되지 않은 사용자 정의 예외"를 나타내는 SQLSTATE 값 '45000'을 할당해야 합니다.

MySQL 트리거와 함께 SIGNAL 문을 사용하는 방법을 설명하기 위해 BEFORE INSERT student_age 테이블에서 트리거합니다. 0보다 작은 나이를 입력하려고 하면 SIGNAL 문을 사용하여 오류 메시지가 표시됩니다.

예시

mysql> Create trigger before_insert_studentage BEFORE INSERT on
student_age FOR EACH ROW BEGIN IF NEW.age<0 then SIGNAL SQLSTATE
'45000' SET MESSAGE_TEXT = 'age less than 0'; END if; END; //
Query OK, 0 rows affected (0.12 sec)

mysql> Insert into student_age(age, name) values(-10,'gaurav')//
ERROR 1644 (45000): age less than 0

위 결과 집합에서 0보다 작은 나이를 삽입하려고 하면 SIGNAL 문을 사용하여 오류가 발생한다는 것이 분명합니다.