집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 트리거는 미래의 생년월일을 기반으로 한 INSERT를 어떻게 방지할 수 있습니까?
MySQL 트리거는 데이터베이스 작업 전후에 자동으로 코드를 실행하여 데이터 무결성을 강화하는 강력한 메커니즘을 제공합니다. 이 예에서는 BEFORE INSERT
트리거가 미래의 생년월일이 포함된 행의 삽입을 방지할 수 있는 방법을 보여줍니다.
birthdate
가 미래에 있을 경우 INSERT를 차단하는 트리거는 다음과 같습니다.
<code class="language-sql">CREATE TRIGGER prevent_future_birthdate BEFORE INSERT ON your_table FOR EACH ROW BEGIN IF NEW.birthdate > CURDATE() THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Birthdate cannot be in the future'; END IF; END;</code>
이 트리거는 사용자 정의 SQLSTATE 오류를 알리고 삽입이 실패한 이유를 설명하는 명확한 메시지를 제공합니다.
다른 접근 방식은 NOT NULL
제약 조건
<code class="language-sql">CREATE TRIGGER set_birthdate_null BEFORE INSERT ON your_table FOR EACH ROW BEGIN IF NEW.birthdate > CURDATE() THEN SET NEW.birthdate = NULL; END IF; END;</code>
NOT NULL
열에 birthdate
제약 조건이 정의된 경우 이를 NULL
으로 설정하면 INSERT가 실패합니다. 그러나 이 방법은 실패 이유에 대해 덜 명확합니다. your_table
을 테이블의 실제 이름으로 바꿔야 합니다.
위 내용은 MySQL 트리거는 미래의 생년월일을 기반으로 한 INSERT를 어떻게 방지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!