Yo empezaría por crear una llave UNIQUE en (asignatura, profesor)
.
Hecho esto, puedes usar INSERT IGNORE
:
INSERT IGNORE INTO joom37_docencia_prof_asig (asignatura,profesor)
VALUES ('asignatura1','profesor1')
Eso simplemente se salta la insersión si el nuevo registro colisiona con una tupla única. También, ya que hablamos de MySQL puedes usar el método de conveniencia REPLACE en vez de INSERT.
REPLACE INTO joom37_docencia_prof_asig (asignatura,profesor)
VALUES ('asignatura1','profesor1')
Pero esto implica que si la llave existe, va a borrar la fila existente y añadir otra. En caso de haber un campo ID autoincremental, va a cambiar el ID porque será una nueva fila.
Finalmente, según tu caso de uso, también podrías usar INSERT ... ON DUPLICATE, por ejemplo si quieres que efectivamente no se modifique la fila que contiene la tupla única, pero sí se actualice un campo de que refleje la última actualización:
INSERT INTO joom37_docencia_prof_asig (asignatura,profesor)
VALUES ('asignatura1','profesor1')
ON DUPLICATE KEY UPDATE actualizacion = now();
En resumen, esta es una parte de la lógica que yo preferiría manejar con las herramientas nativas de la BBDD para resguardar la integridad de los datos.