MySql Administrator Parte 11

 

Neste artigo vou falar sobre SQL Mode, que faz parte da aba Advanced do menu Startup variables, sendo uma configuração com conteúdo extenso achei mais interessante criar um artigo somente para este configuração.

 

SQL Mode: Define o modo em que o Mysql irá “trabalhar”. O MySql pode trabalhar em diferentes modos, que podem ser aplicados para diferentes clientes (estações), isso possibilita que cada estação trabalhe da forma que melhor se adapte a sua necessidade. Estes modos de trabalho definem qual a sintaxe a ser utilizada pelo mysql e quais a validações serão realizadas pelo MySql nas transações fazendo com que o MySql possa trabalhar com ambientes diferentes.

 

Os modos mais importantes são:

 

ANSI, STRIC_TRANS_TABLES e TRADITIONAL.

 

ANSI – Esta opção faz com que o mysql trabalhe com o padrão ANSI para SQL

 

STRIC_TRANS_TABLES – Esta opção é a mais restrita, por exemplo se numa transação algum valor não pode ser inserido, o MySql aborta a transação e no caso de não usar tabelas transacionais o MySql aborta a instrução enviada ao banco. Este modo restringe a entrada de valores inválidos ou inexistentes. Um valor pode ser inválido por várias razões; por exemplo o tipo do dados inserido ser diferente do campo do banco, quando está fora de um intervalo, quando um valor a ser inserido está nulo e o campo está como não-nulo e você não tem uma definição do valor default dentre outros.

 

TRADITIONAL – Esta opção faz com que o MySql comporte como um SGDB (Sistema Gerenciador de Banco de Dados) tradicional. Sempre que for inserido um valor incorreto em uma coluna, o MySql emitirá um erro ao invés de uma advertência. O INSERT / UPDATE é cancelado logo após o erro deixando “lixo” na inserção ou alteração, pois o que foi inserido ou alterado não é desfeito em função do erro. É um modo mais flexível mas que por sua vez deve ser tratado com  uma atenção especial.

 

Estes modos de configuração do MySql podem ser definidos de três formas:

- Iniciando o serviço mysqld com o parâmetro  –sql-mode=”modo desejado

- Acrescentar a instrução sql-mode=”modo desejadono arquivo my.ini (Windows) ou no arquivo my.cnf (Unix, Linux)

      usar o MySql Administrator conforme explicado no artigo anterior.

 

Existem várias outras opções de configuração destes modos de trabalho que podem ser usados em conjunto para restringir ou não os modos entre se.

 

O outros modos de configuração são:

 

ALLOW_INVALID_DATES, ANSI_QUOTES, ERROR_FOR_DIVISION_BY_ZERO, HIGH_NOT_PRECEDENCE,

IGNORE_SPACE, NO_AUTO_CREATE_USER, NO_AUTO_VALUE_ON_ZERO, 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, PIPES_AS_CONCAT, REAL_AS_FLOAT, STRICT_ALL_TABLES

 

Existem ainda os modos especiais, que recebem este nome porque algumas equivalem a algumas combinações dentre os modos citados acima. Estes modos estão disponíveis apenas a partir da versão 5.1 do MySql, para versões inferiores deve-se usar as opções separadas.

 

Os Modos especiais são:

 

DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, ORACLE, POSTGRESQL, TRADITIONAL

 

Vejamos agora a quais combinações equivalem cada um dos modos especiais:

 

DB2 - PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,

       NO_FIELD_OPTIONS.

 

MAXDB - PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,

         NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

 

MSSQL - PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,

         NO_FIELD_OPTIONS

 

MYSQL323 - NO_FIELD_OPTIONS, HIGH_NOT_PRECEDENCE.

 

MYSQL40 - NO_FIELD_OPTIONS, HIGH_NOT_PRECEDENCE.

 

ORACLE - PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS,

          NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.

 

POSTGRESQL - PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS,

                                  NO_TABLE_OPTIONS, NO_FIELD_OPTIONS.

 

TRADITIONAL - STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,

                                     ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER.

 

 

Bem acho que vocês já têm uma idéia da quantidade de configurações possíveis no modo de trabalho do MySql. No próximo artigo vocês verão a descrição de cada uma das configurações restantes.