SQL_MODE
Stai visualizzando una vecchia versione di questo article. Visualizza
la versione più recente.
I server MariadB e MySQL supportano diverse modalità che permettono di adattare i loro comportamenti ai propri bisogni.
La variabile più importante in tal senso è SQL_MODE
.
Esso è una stringa contenente valori separati da virgole (',
').
E' possibile conoscerne il valore locale e quello globale in questo modo:
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
E' possibile cambiare SQL_MODE
dalla riga di comando (opzione --sql-mode
) o impostando la variabile.
I diversi valori di SQL_MODE
sono i seguenti:
Opzione | Spiegazione |
---|---|
ALLOW_INVALID_DATES | Permette qualsiasi giorno tra 1-31 nelle date. Può essere comodo se si desidera inserire tutto (compresi i dati errati) nel database e manipolarlo in seguito. |
ANSI | Modifica la sintassi SQL perché sia più vicina all'ANSI SQL. ImpostaREAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE |
ANSI_QUOTES | Modifica " perché sia trattato come ` , le virgolette per gli identificatori. Questo potrebbe creare problemi alle vecchie applicazioni che usano " come virgolette per le stringhe. |
DB2 | Equivale a:PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS |
ERROR_FOR_DIVISION_BY_ZERO | Restituisce un errore (invece di uno warning) se avviene una divisione per zero. Se questa opzione non è impostata, le divisioni per zero restituiscono NULL. |
HIGH_NOT_PRECEDENCE | Opzione di compatibilità con MySQL 5.0.1 e precedenti; modifica NOT a BETWEEN b AND c perché sia interpretato come (NOT a) BETWEEN a AND c |
IGNORE_BAD_TABLE_OPTIONS | Se impostato, genera un errore (non uno warning) quando una CREATE TABLE contiene delle opzioni di tabella non valide. |
IGNORE_SPACE | Permette di inserire degli spazi tra i nomi di funzione e '('. In questo modo però le funzioni built-in diventano parole riservate. |
MAXDB | Equivale a:PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER |
MSSQL | Equivale a:PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS |
MYSQL323 | Equivale a:MYSQL323,HIGH_NOT_PRECEDENCE |
MYSQL40 | Equivale a:MYSQL40,HIGH_NOT_PRECEDENCE |
NO_AUTO_CREATE_USER | Non crea automaticamente gli utenti con una GRANT |
NO_AUTO_VALUE_ON_ZERO | Se impostato, non genera un valore AUTO_INCREMENT quando quando viene inserito uno zero in una colonna AUTO_INCREMENT . Normalmente zero e NULL generano nuovi valori AUTO_INCREMENT . |
NO_BACKSLASH_ESCAPES | |
NO_DIR_IN_CREATE | |
NO_ENGINE_SUBSTITUTION | |
NO_FIELD_OPTIONS | |
NO_KEY_OPTIONS | |
NO_TABLE_OPTIONS | |
NO_UNSIGNED_SUBTRACTION | |
NO_ZERO_DATE | |
NO_ZERO_IN_DATE | |
ONLY_FULL_GROUP_BY | |
ORACLE | Equivale a:PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER |
PAD_CHAR_TO_FULL_LENGTH | |
PIPES_AS_CONCAT | |
POSTGRESQL | Equivale a:PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS |
REAL_AS_FLOAT | |
STRICT_ALL_TABLES | |
STRICT_TRANS_TABLES | |
TRADITIONAL | Fa sì che MySQL funzioni come un server SQL tradizionale. Equivale a:STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER |
Commenti
Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.