Corsi on-line

MySQL: supplire alla mancanza del dato BOOL

Per MySQL non è disponibile nativamente il tipo di dato BOOL, esso (come BOOLEAN) non è altro che un sinonimo di un altro tipo di dato realmente esistente: TINYINT(1); per BOOL un valore zero viene considerato “false” mentre i valori diversi da zero sono considerati “true”, false e true non sono altro che degli alias (riferimenti) ai valori reali “0” e “1”.

Per supplire alla mancanza del dato BOOL è possibile sfruttare un semplice meccanismo di emulazione, per cui un’istruzione come la seguente:

ALTER TABLE tbl ADD COLUMN campo TINYINT(1) NOT NULL;

Non è altro che un’emulazione di:

ALTER TABLE tbl ADD COLUMN campo BOOL NOT NULL;

In questo modo, utilizzando TINYINT sarà possibile utilizzare lo “0” in luogo di false e “1” in alternativa a true, vi sono però anche dei limiti insiti nel processo di emulazione:

  • tutti gli altri numeri verranno interpretati come diversi da false ma non per questo true;
  • un dato di tipo TINYINT occupa 1 byte mentre un BOOL dovrebbe occupare 1 bit.

Ne conseguono alcune problematiche relative all’ottimizzazione che non potranno essere risolte prima dell’introduzione di questo importante tipo di dato.

Post correlati
I più letti del mese
Tematiche