MySQL Identificador Pergunta

votos
1

De exemplos de perguntas do guia de certificação mysql ...

questão

Será a seguinte instrução SQL sucesso ou resultar em um erro? Suponha que a tabela a ser criada ainda não existir.

CREATE TABLE MD5 (INT ID);

responda

Os resultados declaração em um erro se o modo IGNORE_SPACE SQL está habilitado. Nesse caso, todos os nomes de função em palavras reservadas ea instrução retornaria um erro porque MD5 é um nome de função.

Se o modo IGNORE_SPACE SQL não está habilitado, a declaração sucede:

mysql> CREATE TABLE MD5 (INT id);
Query OK, 0 linhas afetadas


Observe que o modo IGNORE_SPACE SQL faz parte do modo ANSI SQL. 

Por que eles falam sobre espaços? Alguém tem alguma idéia? Qual será a resposta correta? Ele falha porque uma função é uma palavra reservada? Será que vai ter sucesso quando citou, por exemplo. com crase ... certo?

Publicado 27/08/2009 em 05:11
fonte usuário
Em outras línguas...                            


2 respostas

votos
2

IGNORE_SPACEmodo permite espaços entre o nome da função e o seguinte parêntese. Se for ativada, todos os nomes de função em palavras reservadas porque se torna impossível para MySQL para determinar se você está chamando uma função ou declarar (usando) um identificador.

Por isso, se estiver activado, o seu CREATE TABLEvai falhar e o seguinte:

SELECT MD5 (some_column) FROM some_table

vai funcionar. Se IGNORE_SPACEestiver desativado, o oposto vai acontecer ( CREATE TABLEvai trabalhar e acima SELECTnão vai porque há um espaço entre o nome da função eo parêntese).

Respondeu 27/08/2009 em 05:17
fonte usuário

votos
0

IGNORE_SPACE irá ignorar espaços entre um nome e função potencial (

Página do manual do MySQL na resolução da função explica tudo , mas aqui está a versão curta:

SELECT md5(colum1) FROM table;

Aplica-se a função md5 para colum1.

 SELECT md5 (colum1) FROM table;

Aplica-se a função md5, se IGNORE_SPACEestiver ativada, a colum1.

Se IGNORE_SPACEestiver desligado, "md5 (" não é tratado como uma chamada de função, porque não há um espaço lá dentro.

Colocar os acentos graves faz o MySQL não coisa que a palavra é um nome de função, mas algum banco de dados, tabela, coluna etc identificador.

Respondeu 27/08/2009 em 05:22
fonte usuário

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