Maison >base de données >tutoriel mysql >Comment une requête SQL Server 2008 avec une référence de colonne non valide peut-elle toujours s'exécuter avec succès ?
SQL Server 2008 Management Studio : exécution inattendue de requêtes malgré une syntaxe invalide
SQL Server 2008 Management Studio présente parfois un comportement contre-intuitif concernant les erreurs de syntaxe. Un cas récent impliquait une requête faisant référence à une colonne inexistante ("hs_id") dans une sous-requête, mais la requête s'exécutait sans erreur.
La structure de la requête est essentielle pour comprendre ce comportement. L'instruction DELETE
externe cible la table Photo
, en utilisant une sous-requête pour identifier les lignes à supprimer. Cette sous-requête sélectionne "hs_id" dans la table HotelSupplier
où "id = 142".
L'erreur réside dans la sous-requête : HotelSupplier
il manque une colonne nommée "hs_id" ; le nom de colonne correct est "hs_key". Cependant, la requête externe contient "hs_id" (dans la table Photo
). Cela permet à SQL Server de résoudre la référence ambiguë « hs_id » dans la sous-requête à la colonne « hs_id » de la table Photo
.
Par conséquent, la sous-requête renvoie un ensemble de valeurs "hs_id" basées sur les données de la table Photo
, qui sont ensuite utilisées pour filtrer l'opération DELETE
. La réussite de l'exécution de la requête, malgré l'erreur de syntaxe initiale, découle de cette résolution implicite de colonne.
Ce comportement, bien que potentiellement surprenant, n'est pas intrinsèquement problématique. Cela souligne le besoin crucial d'un référencement explicite des colonnes (à l'aide de noms ou d'alias complets) pour éviter toute ambiguïté et maintenir l'intégrité des donné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!