Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy mysql_query zatwierdza wszystko?

Stare rozszerzenie mysql nie ma funkcji przeznaczonych specjalnie do kontroli transakcji, ale możesz wydawać polecenia SQL, aby robić to, co chcesz.

Możesz domyślnie wyłączyć automatyczne zatwierdzanie na czas trwania jednej transakcji, po prostu rozpoczynając transakcję:

mysql_query("START TRANSACTION");

Zaraz po COMMIT lub ROLLBACK, tryb automatycznego zatwierdzania powróci do ustawień domyślnych.

mysql_query("COMMIT"); // or ROLLBACK

Możesz wyłączyć automatyczne zatwierdzanie dla całej sesji, ustawiając zmienną sesji:

mysql_query("SET autocommit=0");

Lub zmień go globalnie w swojej instancji MySQL, aby zmieniał ustawienie domyślne dla wszystkich sesji:

mysql_query("SET GLOBAL autocommit=0");

Lub ustaw go, aby zmienić ustawienia globalne podczas uruchamiania usługi MySQL, edytując /etc/my.cnf:

[mysqld]
autocommit=0

Jeśli używasz MySQL 5.1, musisz to zrobić nieco inaczej:

[mysqld]
init_connect='SET autocommit=0'

Pewnie już wiesz, ale warto powtórzyć, że transakcje mają znaczenie tylko wtedy, gdy używasz tabel InnoDB. Tabele MyISAM nie obsługują transakcji, więc zawsze są zatwierdzane automatycznie, niezależnie od ustawień. To samo z kilkoma innymi silnikami pamięci masowej, w tym MEMORY i CSV.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z użyciem pola TEKSTOWEGO w tabeli mysql

  2. Skopiuj wartość kolumny z jednej tabeli do innego pasującego identyfikatora

  3. Wszystkie kolumny tabeli powinny być indeksowane, czy nie mysql bazy danych?

  4. Wstaw MySQL tam, gdzie nie istnieje / jeśli nie istnieje

  5. Nie można połączyć Ruby on Rails ze zdalną bazą danych mysql