MySQL 트리거를 사용하여 미래 생일 삽입 방지
질문:
향후 행에 생일 열 삽입을 비활성화하는 MySQL 트리거를 만듭니다.
정답:
생일 열이 현재 날짜를 초과할 때 삽입을 방지하려면:
<code class="language-sql">CREATE TRIGGER check_birthdate BEFORE INSERT ON table FOR EACH ROW BEGIN IF NEW.birthdate > CURRENT_DATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'; END IF; END;</code>
지침:
CREATE TRIGGER
문은 check_birthdate
이라는 새 트리거 생성을 시작합니다. BEFORE INSERT
절은 삽입 작업 전에 트리거가 실행되어야 함을 지정합니다. ON table
절은 트리거가 적용될 테이블을 지정합니다. FOR EACH ROW
은 각 행에 대해 트리거가 실행되어야 함을 나타냅니다. IF
문은 NEW.birthdate
필드의 값(삽입된 행의 열 값)이 CURRENT_DATE()
보다 큰지 확인합니다. 그렇다면 트리거는 다음 단계로 진행됩니다. SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'
문은 SQL 상태가 '45000'(제약조건 위반을 나타내는 사용자 정의 예외 조건)인 SQL 예외를 발생시킵니다. 이렇게 하면 현재 삽입 작업이 취소되고 더 명확한 오류 메시지가 제공됩니다. 향상된 문에는 SET MESSAGE_TEXT
이 포함되어 있어 오류 메시지를 더 쉽게 이해하고 디버그할 수 있습니다. 이 수정된 답변은 더욱 유용한 오류 메시지를 제공하여 사용성을 향상시킵니다.
위 내용은 트리거를 사용하여 MySQL에서 향후 생년월일 삽입을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!