Transações                  são seqüências de operações que                  são executadas após um delimitador e finalizadas                  após outro delimitador. No caso do Mysql, nosso delimitador                  de inicio é o comando start transaction,                  e o delimitador de fim de transação pode ser                   commit ou rollback.
No MySQL, o tipo de                  tabela que dá suporte a transações é                  o InnoDB. Por default, o MySQL cria tablelas do tipo MYISA. Logo,                  se você quiser ativar o suporte a transações,                  será necessário realizar a conversão dos                  tipos da tabela, do tipo padrão para o InnoDb e/ou criá-las                  e especificar o tipo desejado.
 O tipo MYISA utiliza                  três arquivos para cada tabela:
Arquivo *.frm
Arquivo *.MYD
Arquivo *.MYD
Arquivo *.MYD
Arquivo *.MYD
Já o tipo InnoDB                  utiliza apenas um arquivo:
Arquivo *.frm
Logo, após a                  conversão, existirá apenas um arquiovo *.frm para                  cada tabela.
 Primeiramente vamos                  realizar a criação de uma tabela InnoDB:
mysql>                  create table teste (teste_id int(2), teste_nome varchar(10)) type=innodb;
                 
Query OK, 0 rows affected (1.15 sec)
 Observe que adicionamos                  a nossa estrutura de criação o parâmetro type=innodb.
Vamos realizar agora                  a conversão de uma tabela:
mysql>                  create table teste1 (teste_id int(2), teste_nome varchar(10));
                 
Query OK, 0 rows affected (0.13 sec)
 Criamos a tabela teste1                  com o tipo MYISA (default).
mysql>                  alter table teste1 type=innodb;
                 
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0
Records: 0 Duplicates: 0 Warnings: 0
 Através do comando                  alter, trocamos o tipo da tabela para                  InnoDB.
 Pronto, agora nossas                  tabelas já possuem suporte a transações.
 Vamos agora inicar                  uma transação.
 O MySQL, por default,                  trabalha no modo de autocommit. Isso significa que sempre que                  você executa um comando, ele é imediatamente executado/gravado                  no banco. Seja ele certo ou errado.
Para iniciarmos uma                  transação, temos que desabilitar o autocommit, pelo                  menos para aquela instância da transação.
mysql>                  set autocommit=0;
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.02 sec)
Vamos inicar nossa trasação:
mysql>                  start transaction;
Query OK, 0 rows affected (0.02 sec)
Query OK, 0 rows affected (0.02 sec)
 --> Comandos SQL
--> Comandos SQL
--> Comandos SQL
--> Comandos SQL
--> Comandos SQL
--> Comandos SQL
--> Comandos SQL
Ao terminar, se estiver                  satisfeito com os comandos acima, basta entrar com o comando commit                  que os resultados dos sql acima serão gravados no banco                  e disponibilizado para todos.
mysql>                  commit;
 Caso o resultado acima                  tenha apresentado erro, ou não seja satisfatório,                  basta executar um rollback e todos os comandos digitados após                  o start transaction serão desconsiderados.
mysql>                  rollback;
 Conforme o explicado                  acima, conseguimos implementar as transações, da                  mesma forma que outros Banco de Dados comerciais utilizam. Com                  isso trazemos maior segurança e escalabilidade para nossas                  aplicações, utilizando um banco de dados open source.
Observações:
.                   Nas versões anteriores a 4.0.11, ao invés                  de utilizar o comando start transaction, use o comando begin;
.                   Antes da conversão das tabelas de produção,                  faça um backup;
.                   Para desativar o modo autocommit do mysql, adicione                  no arquivo my.cnf ou my.ini a linha autocommit=0;
.                   Para alterar o tipo padrão de criação                  de tabelas para InnoDB, basta acrescentar a linha default-table-type=innodb                  na sessão [mysqld] do arquivo `my.cnf"                  ou                  `my.ini.
04:39
Ricardo Ortéga

 Posted in:  




0 comentários:
Postar um comentário