
# 为什么实时灾备任务不支持触发器（TRIGGER）和事件（EVENT）
数据库的触发器（TRIGGER）和事件（EVENT）操作会记录binlog，DRS通过解析binlog同步数据，如果业务侧写入与触发器、事件存在同样对象，就会发生重复执行导致数据不一致或者任务失败，所以在灾备场景下，触发器和事件是不支持的。
假如源库表user存在这样触发器，当表user写入数据时，触发器会同步往另一个log表中写入一条日志数据。
当源库业务侧写入了一条数据到user表。
![](https://support.huaweicloud.com/drs_faq/figure/zh-cn_image_0000001503550757.png "点击放大")
触发器同步了这条数据到log表，此时binlog中会有两条数据，如下图，第一条就是业务插入user表的数据，第二条是触发器被触发，写入到log中的数据。
![](https://support.huaweicloud.com/drs_faq/figure/zh-cn_image_0000001568805448.png "点击放大")
DRS同步数据的时候可能会出现以下情况：
- 如果先同步了插入的数据到目标库user表，这时候目标数据库的触发器被触发，目标库log表会自动写入，当同步第二条log表数据时，就无法将这条log表数据写到目标库了，数据冲突任务报错。
- 如果先同步log表中的数据，再同步user表的数据时，这时候目标数据库的触发器被触发，会导致log表多一条数据，发生数据不一致问题。
同理，事件（EVENT）也会记录binlog并在目标库再次执行，这也会导致上述问题。
DRS实时迁移支持触发器和事件，是因为DRS会在结束任务的时候去迁移触发器和事件，在结束任务成功的时候保证目标库和源库的对象一致。
