>데이터 베이스 >MySQL 튜토리얼 >향후 생년월일 삽입을 방지하기 위해 MySQL 트리거를 사용하는 방법은 무엇입니까?

향후 생년월일 삽입을 방지하기 위해 MySQL 트리거를 사용하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-16 18:41:10244검색

How to Use a MySQL Trigger to Prevent Future Birthdate Inserts?

MySQL 트리거를 사용하여 미래의 생년월일이 삽입되지 않도록 방지

MySQL에서는 트리거를 사용하여 특정 조건에 따른 삽입 작업을 방지할 수 있습니다. 그러한 경우 중 하나는 미래에 생년월일이 삽입되는 것을 방지하는 것입니다.

이를 위해 BEFORE INSERT 열의 값을 확인하는 birthdate 트리거를 생성할 수 있습니다.

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    -- 如何阻止插入?
  END IF;
END;</code>

IF 문 내에서 삽입 작업을 취소하려면 MySQL의 SIGNAL 문을 사용할 수 있습니다.

<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = '由于出生日期为未来日期,因此不允许插入';
  END IF;
END;</code>

또는 제약 조건을 위반하도록 데이터를 수정할 수 있습니다. 예를 들어 생년월일이 미래인 경우 birthdate 열의 값을 NULL:

으로 설정합니다.
<code class="language-sql">CREATE TRIGGER foo BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    SET NEW.birthdate = NULL;
  END IF;
END;</code>

birthdate 컬럼은 NOT NULL으로 정의되어 있으므로 삽입 작업이 자동으로 거부됩니다.

위 내용은 향후 생년월일 삽입을 방지하기 위해 MySQL 트리거를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.