Guillemets doubles dans les noms de tables de la base de données Oracle : analyse d'importance
Un morceau de code NHibernate tente d'exécuter la requête suivante :
<code class="language-sql">SELECT * FROM "site" WHERE site_id = 3;</code>
Le résultat est une erreur "La table ou la vue n'existe pas". Cependant, la requête suivante fonctionne correctement :
<code class="language-sql">SELECT * FROM site WHERE site_id = 3;</code>
Cette différence résulte de la distinction faite par Oracle entre la sensibilité à la casse des identifiants.
Sensibilité à la casse des identifiants Oracle
Par défaut, Oracle traite les identifiants sans tenir compte de la casse, ce qui signifie que « site » et « Site » font référence à la même table. Toutefois, si vous placez un identifiant entre guillemets (" ") dans une requête, Oracle le traite comme étant sensible à la casse.
Impact sur la requête
Si une table est créée sans guillemets doubles, Oracle stockera son nom en majuscules. Par conséquent, les requêtes telles que "SELECT * FROM my_table" fonctionneront quelle que soit la casse.
Cependant, si vous placez le nom de la table entre guillemets lors de la création de la table ("CREATE TABLE "my_table""), Oracle conservera sa casse exacte. Dans ce cas, la requête doit utiliser la casse correcte lors du référencement de la table, telle que "SELECT * FROM "my_table"".
Le rôle de NHibernate
Dans NHibernate, vous pouvez spécifier des noms de table avec ou sans guillemets doubles. Si vous omettez les guillemets doubles, NHibernate suppose automatiquement des comparaisons insensibles à la casse. Cependant, NHibernate génère des requêtes SQL sensibles à la casse si des guillemets doubles sont présents dans le mappage.
Application pratique
Comprendre l'impact des guillemets doubles sur les noms de tables est essentiel pour les performances des requêtes. L'utilisation cohérente de guillemets doubles pour les tableaux sensibles à la casse garantit qu'Oracle trouve rapidement le bon tableau sans conversions inutiles. Sinon, des erreurs ou des problèmes de performances pourraient en résulter.
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!