Autor Zpráva
quatzael
Profil
Řekněme, že budu mít ve sloupci nastavený typ ENUM takto:
enum('on', 'off')

Tedy jen na dvě možnosti 'on' a 'off'. Když tam náhodou budu vkládat něco jiného, můžu se spolehnout, že mi to tam vždy vloží defaultní hodnotu, kterou mám nastavenou na 'off'?

Díky za odpovědi.
juriad
Profil
Ne. Viz sqlfiddle.com/#!9/1e4da/4. Zkoušel jsem tam vkládat vše, co mě napadalo, a toto je výsledek.
Jak si vůbec představuješ pustit do databáze něco, nad čím nemáš kontrolu? To je tak těžké zkontrolovat, že vkládáš jen a pouze 'on' nebo 'off'?
quatzael
Profil
juriad:
Chci jednou univerzální funkcí mít možnost vkládat do více tabulek bez ohledu na sloupce, takže jsem si chtěl ušetřit několik řádků (nemám tam jen ENUM pro on/off)..
Každopádně díky.
Dusann
Profil
quatzael:
Tedy jen na dvě možnosti 'on' a 'off'. Když tam náhodou budu vkládat něco jiného, můžu se spolehnout, že mi to tam vždy vloží defaultní hodnotu, kterou mám nastavenou na 'off'?

Ak nepoužívaš strict sql mode, tak môžeš empty string nahradiť za "off" hodnotu:

If you insert an invalid value into an ENUM (that is, a string not present in the list of permitted values), the empty string is inserted instead as a special error value.

If strict SQL mode is enabled, attempts to insert invalid ENUM values result in an error.

Budeš mať teda ENUM s hodnotami "on" a empty string a pri pokuse tam vložiť niečo iné sa zapíše empty string.

EDIT: ak je možné v MySQL to vytvoriť, tak ti vlastne stačí zadefinovať iba ENUM s "on" hodnotou.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0