当我们删除具有该触发器的表时,触发器会发生什么情况?

2023年 9月 1日 10.3k 0

当我们删除具有该触发器的表时,触发器会发生什么情况?

如果我们销毁与其关联的表,触发器也会被销毁。这称为触发器的显式销毁。可以通过一个例子来理解 -

示例

假设我们在名为“Sample”的表上有一个名为“trigger_before_delete_sample”的触发器。现在,如果我们删除该表,那么与该表关联的上述触发器也将被删除。

mysql> Show TriggersG
*************************** 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_ci
2 rows in set (0.01 sec)

登录后复制

上面的结果集显示数据库中有两个触发器,其中一个触发器与名为“Sample”的表关联。现在,借助以下语句,我们将删除该表 -

mysql> DROP table sample;
Query OK, 0 rows affected (0.26 sec)

登录后复制

现在借助以下语句,我们可以看到与名为“Sample”的表关联的触发器也被销毁了。

mysql> Show TriggersG
*************************** 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_ci
1 row in set (0.01 sec)

登录后复制

以上就是当我们删除具有该触发器的表时,触发器会发生什么情况?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论