示例假设我们在名为“sample”的表上有一个名为“trigger_before_delete_sample”的触发器。现在,如果我们删除该表,那么与该表关联的上述触发器也将被删除。
mysql> show triggers\g*************************** 1. row *************************** trigger: trigger_before_delete_sample event: delete table: sample statement: begin set @count = if (@count is null, 1, (@count+1)); insert into sample_rowaffected values (@count);end timing: before created: 2017-11-21 12:31:58.70 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 definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci database collation: latin1_swedish_ci*************************** 2. row *************************** trigger: before_inser_studentage event: insert table: student_age statement: if new.age < 0 then set new.age = 0;end if timing: before created: 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 definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci database collation: latin1_swedish_ci2 rows in set (0.01 sec)
上面的结果集显示数据库中有两个触发器,其中一个触发器与名为“sample”的表关联。现在,借助以下语句,我们将删除该表 -
mysql> drop table sample;query ok, 0 rows affected (0.26 sec)
现在借助以下语句,我们可以看到与名为“sample”的表关联的触发器也被销毁了。
mysql> show triggers\g*************************** 1. row *************************** trigger: before_inser_studentage event: insert table: student_age statement: if new.age < 0 then set new.age = 0;end if timing: before created: 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 definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci database collation: latin1_swedish_ci1 row in set (0.01 sec)
以上就是当我们删除具有该触发器的表时,触发器会发生什么情况?的详细内容。