Autor Zpráva
quatzael
Profil
Lze nějak v databázi definovat sloupec, který by měl jen jako hodnotu jen omezený počet variant.

Například bych chtěl, aby hodnota ve sloupci byla buď "on" nebo "off", s tím že výchozí by bylo například "off".

Je to nějak možné?
Joker
Profil
quatzael:
Ano, k tomu slouží datové typy ENUM a SET.
(ENUM je jedna hodnota z dané množiny, SET je jedna nebo více hodnot z dané množiny.)
quatzael
Profil
Joker:
Supr, díky. Vypadá to, že by to mělo fungovat.
quatzael
Profil
Joker:
Ještě možná malinkej dotaz.. Pokud budu mít to ENUM a množinu jen ze dvou hodnot (on/off), může taky nastat případ, že kolonka bude prázdná? Když vyplním v řádku jiné buňky a tuhle budu ignorovat, nestane se nic (nejaká chyba)?

Respektive co se stane, když tam například budu cpát omylem hodnotu "ok"? Hodí to error a příkaz neproběhne, nebo to bude ignorovat a sloupec vynechá (nechá prázdný)?
juriad
Profil
quatzael:
A co kdyby sis to zkusil?
http://sqlfiddle.com/#!2/cfe98/1
quatzael
Profil
juriad:
No jo, ale když to zkusím sám, tak si nemůžu být jistej, jestli mi to funguje, protože tam mám nějakej nesmysl, i přesto že to fungovat správně nená.. Nebo, že mi to nebude fungovat i když to fungovat má..

Hodí to error a příkaz neproběhne, nebo to bude ignorovat a sloupec vynechá (nechá prázdný)?
A co teda tohle? Zkusil jsem tam dát ještě jeden sloupec, aby bylo trochu jasný co to dělá.

Když to nevyplním, tak mi tam automaticky dosadí NULL, ale já bych preferoval spíš kdyby to zůstalo prázdný.. Tak nevím jestli to NULL tam je jen proto, že je tak nastavená tabulka nebo prostě se to v tomto případě bez nul ani neobejde..

http://sqlfiddle.com/#!2/a1ad2/1
juriad
Profil
NULL znamená chybějící (prázdná) nebo neznámá hodnota.
Pokud bys k definici sloupce přidal NOT NULL, tak by byla hodnota vyžadována (musí být vyplněný, neprázdný); sloupec by tedy musel obsahovat buď 'on', nebo 'off'.
quatzael
Profil
juriad:
Dík moc. Tohle jsem potřeboval vědět.

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