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

OLD 및 NEW 키워드를 사용하여 트리거의 영향을 받는 행의 열에 액세스할 수 있는 방법은 무엇입니까?

<시간/>

트리거 정의에서 삽입, 업데이트 또는 삭제되는 행의 열을 참조할 수 있다는 것을 알고 있습니다. 다음은 OLD 및 NEW 키워드를 사용하여 열에 액세스하는 방법입니다 -

  • 원래 행의 값을 참조하려면 열 이름 앞에 OLD 한정자를 붙여야 합니다.

  • 새 행의 값을 참조하려면 열 이름 앞에 NEW 한정자를 붙여야 합니다.

이제 이벤트를 발생시키기 때문에 OLD와 NEW를 적절히 사용해야 합니다.

어느 것이 허용되는지 결정합니다 -

  • INSERT 트리거에서 NEW.column_name은 새 행에 삽입할 열 값을 나타냅니다. 여기서 OLD는 허용되지 않습니다.

  • DELETE 트리거에서 OLD.column_name은 삭제할 행의 열 값을 나타냅니다. 여기서 NEW는 허용되지 않습니다.

  • UPDATE 트리거에서 OLD.column_name 및 NEW.column_name은 각각 행이 업데이트되기 전과 후에 행의 열 값을 참조합니다.

즉, OLD는 읽기 전용 방식으로 사용해야 하고 NEW는 열 값을 읽거나 변경하는 데 사용할 수 있다고 말할 수 있습니다.

트리거에서 키워드 OLD 사용

DELETE 트리거의 예는 OLD −

의 사용을 보여줍니다.
mysql> CREATE TRIGGER studentinfo_after_delete
   -> AFTER DELETE
   -> ON student_info
   -> FOR EACH ROW FOLLOWS
   -> BEGIN
   -> DECLARE vuser varchar(30);
   -> SELECT USER() into vuser;
   -> INSERT INTO student_info_deleted(id,deleted_date,deleted_by) VALUES(OLD.id,SYSDATE(),vuser);
   -> END; //
Query OK, 0 rows affected (0.25 sec)

트리거에서 키워드 NEW 사용

INSERT 트리거의 예는 NEW −

의 사용을 보여줍니다.
mysql> Create Trigger before_inser_studentage BEFORE INSERT ON
student_age FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN SET NEW.age = 0;
END IF;
END //
Query OK, 0 rows affected (0.30 sec)