Is there any way to know if the replication thread is executing the DML?
I have a slave-only trigger. It gets executed by the replication process. I also run other DML against the slave which I don't want the trigger to be executed for.
I was thinking that I could somehow find out who is doing the DML in the trigger: If it is replication then <do something> else <do nothing> end if;
Is there any way? Something similar to CURRENT_USER() or USER(), but which would return the MASTER_USER?
Answer Answered by Manu Anttila in this comment.
Okay. In the trigger I check if it is a local process that has executed the DML by querying the ID+HOST in information_schema.processlist and comparing them to CONNECTION_ID()+USER(). I can make the decision based on that.
MariaDB [xxx]> select LocalProcess(); +----------------+ | LocalProcess() | +----------------+ | 1 | +----------------+
This question can be removed or marked as answered on my behalf.