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

해당 트리거가 있는 테이블을 삭제하면 트리거는 어떻게 됩니까?


트리거가 연결된 테이블을 삭제하면 트리거도 소멸됩니다. 이를 트리거의 명시적 파괴라고 합니다. 예의 도움으로 이해할 수 있습니다 -

예시

'Sample'이라는 테이블에 'trigger_before_delete_sample'이라는 트리거가 있다고 가정합니다. 이제 이 테이블을 삭제하면 이 테이블과 연결된 위의 트리거도 삭제됩니다.

mysql> Show Triggers\G****************************** 1. 행 *********** **************** 트리거:trigger_before_delete_sample 이벤트:DELETE 테이블:샘플 문:BEGIN SET @count =if (@count IS NULL, 1, (@count+1)); sample_rowaffected 값 (@Count)에 삽입하십시오; 끝나기 전에 :2017-11-21, schrict_trans_tables, no_zero_in_date, no_zero_date, error_for_division_by_zero, no_auto_create_user, no_engine_substitution_user :root @ localhost starame_set_client :cp850 collation_connection :cp850_general_ci 데이터베이스 데이터 정렬:latin1_swedish_ci****************************** 2. 행 *************** ************ 트리거:before_inser_studentage 이벤트:INSERT 테이블:student_age 문:IF NEW.age <0 THEN SET NEW.age =0;END IF 타이밍:BEFORE 생성:2017-11-21 11 :26:15.34 sql_mode:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION 정의자:root@localhost character_set_client:cp850 collation_connection:cp850_general_ci 데이터베이스 데이터 정렬:latin1_swedish_ci01 in set (0)
위의 결과 집합은 데이터베이스에 두 개의 트리거가 있음을 보여줍니다. 이 중 'Sample'이라는 테이블과 연결된 트리거가 있습니다. 이제 다음 명령문의 도움으로 테이블을 DROP할 것입니다 -

mysql> DROP 테이블 샘플, 쿼리 OK, 영향을 받는 행 0개(0.26초)

이제 다음 명령문의 도움으로 'Sample'이라는 테이블과 연결된 트리거도 소멸되었음을 알 수 있습니다.

mysql> Show Triggers\G****************************** 1. 행 *********** **************** 트리거:before_inser_studentage 이벤트:INSERT 테이블:student_age 문:IF NEW.age <0 THEN SET NEW.age =0;END IF 타이밍:BEFORE 생성:2017- 11-21 11 :26 :15.34 sql_mode :ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION 디파 :루트 @ 로컬 호스트해서 character_set_client :CP850이 collation_connection :cp850_general_ci 데이터베이스 정렬 :세트 latin1_swedish_ci1 행 (0.01 초)