MySQL Identifier Otázka

hlasů
1

Od například otázky MySQL průvodce certifikace je ...

otázka

Bude následující příkaz SQL podaří, nebo mít za následek chybu? Předpokládejme, že tabulka bude vytvořena již neexistuje.

CREATE TABLE MD5 (id INT);

Odpovědět

Výsledky výkazu vygeneruje chybu, pokud je aktivován režim IGNORE_SPACE SQL. V tomto případě jsou všechny funkce názvy stávají vyhrazená slova a příkaz vrátí chybu, protože MD5 je název funkce.

Není-li povolen režim IGNORE_SPACE SQL, prohlášení následuje:

MySQL> CREATE TABLE MD5 (id INT);
Dotaz OK, 0 řádků postižených


Všimněte si, že režim IGNORE_SPACE SQL je součástí režimu ANSI SQL. 

Proč se mluví o prostor? Každý, kdo má nějaký nápad? Jaká bude správná odpověď? To se nezdaří, protože funkce je vyhrazené slovo? Bude to podaří, když citoval, např. s backtick ... jo?

Položena 27/08/2009 v 05:11
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

IGNORE_SPACERežim umožňuje mezery mezi názvy funkcí a následující závorkách. Pokud je to povoleno, všechny názvy funkcí se stal vyhrazená slova, protože to stane se nemožné pro MySQL, zda voláte funkce nebo deklarovat (s použitím) identifikátor.

Proto, pokud je to povoleno, vaše CREATE TABLEselže a následující:

SELECT MD5 (some_column) FROM some_table

bude pracovat. Pokud IGNORE_SPACEje vypnuta, opak stane ( CREATE TABLEbude fungovat a především SELECTnebude, protože tam je mezera mezi názvu funkce a závorce).

Odpovězeno 27/08/2009 v 05:17
zdroj uživatelem

hlasů
0

IGNORE_SPACE bude ignorovat mezery mezi potenciálním názvu funkce a (

Manuálové stránky MySQL na rozlišení funkce vysvětluje to všechno , ale tady je krátká verze:

SELECT md5(colum1) FROM table;

Aplikuje funkce MD5 na colum1.

 SELECT md5 (colum1) FROM table;

Aplikuje funkci MD5, pokud IGNORE_SPACEje povoleno, aby colum1.

Pokud IGNORE_SPACEje vypnutá, „md5 (“ není považována za volání funkce, protože tam je mezera tam.

Uvedení backticks dělá MySQL není věc slovo je název funkce, ale některé databáze, tabulka, sloupec atd identifikátor.

Odpovězeno 27/08/2009 v 05:22
zdroj uživatelem

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