Maison > base de données > tutoriel mysql > Quand les contraintes de clé PRIMAIRE/UNIQUE DÉFERRABLES sont-elles réellement appliquées dans PostgreSQL ?

Quand les contraintes de clé PRIMAIRE/UNIQUE DÉFERRABLES sont-elles réellement appliquées dans PostgreSQL ?

DDD
Libérer: 2025-01-06 09:11:40
original
417 Les gens l'ont consulté

When Are DEFERRABLE PRIMARY/UNIQUE Key Constraints Actually Enforced in PostgreSQL?

Contraintes INITIALEMENT IMMÉDIATES DIFFÉRABLES : Application de l'exécution

Question :

Quel est le moment exact auquel DIFFÉRABLE / DIFFÉRABLE/ Les contraintes IMMÉDIATES de clé unique/primaire sont appliqué ?

Réponse :

Selon Tom Lane, un éminent développeur principal de PostgreSQL, le comportement actuel est prévu et ne sera pas modifié. La contrainte est considérée comme satisfaite si elle reste vraie à la fin de la commande, même si elle est violée lors des étapes intermédiaires.

Résumé de l'application de la contrainte :

  • Contraintes de CLÉ UNIQUE/PRIMAIRE NON DIFFÉRABLE : Vérifiées après chaque rangée.
  • Contraintes DÉFERRABLES (IMMÉDIATE) : Vérifiées après chaque instruction.
  • Contraintes DÉFERRABLES (DIFFÉRÉES) : Vérifiées après chaque transaction.

Exceptions :

  • NON DIFFÉRABLE Contraintes d'unicité : Malgré la norme SQL dictant l'application à la fin de la instruction, PostgreSQL vérifie l'unicité immédiatement après chaque commande pour UNIQUE/PRIMARY KEY contraintes.

Solution de contournement :

Pour respecter le standard SQL, déclarez la contrainte comme DÉFERRABLE mais INITIALEMENT IMMÉDIATE. Cependant, cela peut avoir des implications sur les performances par rapport à la vérification immédiate de l'unicité.

Limitations :

Les contraintes FOREIGN KEY ne peuvent pas faire référence aux colonnes DEFERRABLE car les colonnes référencées doivent faire partie d'un non -contrainte de clé unique ou primaire différée.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal