Il y a peut-être des soucis possibles niveau transactions, mais le principal problème que je vois est la maintenabilité du code PHP: un jour, lors de l'ajout d'une feature, tu vas oublier de passer par ton code PHP et tu vas faire l'insert en BDD direct, sans passer par la phase de check. Là, ça coincera.
D'autant que ces checks rajoutés en PHP alourdissent le code (sans avoir forcément de sens véritable niveau code métier). Enfin, MySQL peut zapper les checks sur les contraintes ou supprimer une contrainte en moins de 2 secondes: le code PHP après les multiples évolutions indispensables à venir sera-t-il capable de faire de même, avec un coût en design/achi/conception limité (celui de MySQL étant de 0, puisque c'est fait par le MySQL qu'on ne développe pas nous-même)?
D'autant que ces checks rajoutés en PHP alourdissent le code (sans avoir forcément de sens véritable niveau code métier). Enfin, MySQL peut zapper les checks sur les contraintes ou supprimer une contrainte en moins de 2 secondes: le code PHP après les multiples évolutions indispensables à venir sera-t-il capable de faire de même, avec un coût en design/achi/conception limité (celui de MySQL étant de 0, puisque c'est fait par le MySQL qu'on ne développe pas nous-même)?