Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O mysql_query confirma tudo


A antiga extensão mysql não possui funções específicas para controle de transações, mas você pode emitir instruções SQL para fazer o que quiser.

Você pode desativar implicitamente o autocommit durante uma transação simplesmente iniciando uma transação:
mysql_query("START TRANSACTION");

Assim que você COMMIT ou ROLLBACK, o modo de autocommit retornará ao padrão.
mysql_query("COMMIT"); // or ROLLBACK

Você pode desativar o autocommit para toda a sua sessão definindo uma variável de sessão:
mysql_query("SET autocommit=0");

Ou altere-o globalmente em sua instância do MySQL para alterar o padrão para todas as sessões:
mysql_query("SET GLOBAL autocommit=0");

Ou defina-o para alterar a configuração global na inicialização do serviço MySQL editando /etc/my.cnf:
[mysqld]
autocommit=0

Se você usa o MySQL 5.1, você tem que fazer isso de forma um pouco diferente:
[mysqld]
init_connect='SET autocommit=0'

Você provavelmente já sabe, mas vale a pena repetir que as transações só significam alguma coisa se você estiver usando tabelas InnoDB. As tabelas MyISAM não suportam transações, então elas sempre são confirmadas automaticamente, independentemente de suas configurações. O mesmo com vários outros mecanismos de armazenamento, incluindo MEMORY e CSV.