Maison >base de données >tutoriel mysql >Comment les contraintes différées et immédiates affectent-elles l'application des clés primaires et uniques dans les transactions de base de données ?
Les contraintes clés primaires et uniques définies comme DIFFÉRÉES / DIFFÉRÉES et INITIALEMENT IMMEDIATE appliquent l'unicité à des moments précis pendant la transaction exécution.
1. Instructions de mise à jour modifiant plusieurs lignes :
Les instructions UPDATE modifiant plusieurs lignes impliquant des échanges de clés primaires réussissent même avec des contraintes INITIALEMENT IMMEDIATE, car la vérification des contraintes est différée jusqu'après l'instruction.
2. CTE de modification de données :
Les CTE de modification de données se comportent de la même manière, à l'exception des mises à jour conflictuelles, qui échouent en raison d'une violation de clé primaire non différée.
3. Plusieurs instructions UPDATE dans une transaction :
Sans SET CONSTRAINTS, plusieurs instructions UPDATE au sein d'une transaction qui violent des contraintes uniques échoueront, car la vérification est effectuée après chaque instruction.
Remarque : Les contraintes UNIQUE et PRIMARY KEY sont traitées spécialement et les contraintes non différées sont vérifiées immédiatement après chaque modification de ligne.
Pour obtenir un comportement conforme à la norme, les contraintes DIFFÉRABLES doivent être déclarées comme INITIALEMENT IMMÉDIATE, mais pas différé. Cela peut compromettre les performances par rapport à la vérification immédiate de l'unicité.
Les contraintes DEFERRABLE ne peuvent pas être utilisées pour les références FOREIGN KEY, car les colonnes référencées doivent être des contraintes de clé unique ou primaire non différées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!