MySQL Identifier question

voix
1

De les exemples de questions de guide de certification MySQL ...

question

l'instruction SQL suivante réussira ou entraîner une erreur? On suppose que la table à créer n'existe pas déjà.

CREATE TABLE MD5 (id INT);

répondre

L'instruction provoque une erreur si le mode IGNORE_SPACE SQL est activée. Dans ce cas, tous les noms de fonction deviennent des mots réservés et la déclaration retourneraient une erreur car MD5 est un nom de fonction.

Si le mode IGNORE_SPACE SQL n'est pas activé, l'instruction réussit:

mysql> CREATE TABLE MD5 (id INT);
Requête OK, 0 lignes affectées


Notez que le mode IGNORE_SPACE SQL fait partie du mode ANSI SQL. 

Pourquoi parlent-ils des espaces? Quelqu'un at-il une idée? Quelle sera la bonne réponse? Elle échoue parce qu'une fonction est un mot réservé? Réussira quand cité, par exemple. avec backtick ... droite?

Créé 27/08/2009 à 05:11
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

IGNORE_SPACEmode permet des espaces entre le nom de la fonction et la parenthèse suivante. Si elle est activée, tous les noms de fonction deviennent des mots réservés, car il devient impossible pour MySQL de déterminer si vous appelez une fonction ou déclarant (en utilisant) un identifiant.

Par conséquent, si elle est activée, votre CREATE TABLEéchouera et les éléments suivants:

SELECT MD5 (some_column) FROM some_table

marchera. Si IGNORE_SPACEest désactivé, le contraire se produira ( CREATE TABLEfonctionnera et au- dessus SELECTne sera pas parce qu'il ya un espace entre le nom de la fonction et la parenthèse).

Créé 27/08/2009 à 05:17
source utilisateur

voix
0

IGNORE_SPACE ignorera les espaces entre le nom de la fonction potentiel et (

Page de manuel de Mysql sur la résolution des fonctions explique tout , mais voici la version courte:

SELECT md5(colum1) FROM table;

Applique la fonction md5 à colum1.

 SELECT md5 (colum1) FROM table;

Applique la fonction md5, si IGNORE_SPACEest activé, à colum1.

Si IGNORE_SPACEest désactivé, « md5 ( » n'est pas traité comme un appel de fonction, parce qu'il ya un espace là - dedans.

Mettre les accents graves fait Mysql pas chose le mot est un nom de fonction, mais une base de données, table, etc colonne identifiant.

Créé 27/08/2009 à 05:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more