phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

Czy mogę używać transakcji z ALTER TABLE?

Niektóre stwierdzenia (w szczególności DDL ) w MySQL powodować niejawne zatwierdzenie przed są wykonywane i nie można ich cofnąć - w związku z tym zapobiega to również cofnięciu wcześniejszych zmian DML.

Oświadczenia wymienione w tej sekcji (i wszelkie ich synonimy) domyślnie kończą każdą transakcję aktywną w bieżącej sesji, tak jakbyś wykonał COMMIT przed wykonaniem instrukcji . Od MySQL 5.5.3 większość z tych instrukcji powoduje również niejawne zatwierdzenie po wykonaniu; aby uzyskać dodatkowe informacje, zobacz koniec tej sekcji.

Od ALTER TABLE jest jedną z instrukcji, których dotyczy problem, partia SQL jest efektywnie traktowana jako:

START TRANSACTION;
INSERT INTO `users` VALUES(NULL, 'User A', '[email protected]', '4', 'User A');

COMMIT; -- prevents ROLLBACK of insert(s), even if DDL fails
ALTER TABLE `users` CHANGE `level` `level` TINYINT(3) UNSIGNED NOT NULL;

Sugerowanym rozwiązaniem jest oddzielenie DDL i DML . dokumentacja mówi:

Powinieneś zaprojektować swoje transakcje [DML] tak, aby nie zawierały takich wyciągów [DDL]. Jeśli wydasz wyciąg na początku transakcji, którego nie można cofnąć, a później kolejne wyciągi nie powiedzie się, pełny efekt transakcji nie może zostać cofnięty w takich przypadkach poprzez wydanie wyciągu ROLLBACK.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Domyślna data i godzina MySQL przez phpmyadmin

  2. Część zawartości bazy danych zniknęła po ponownej instalacji WAMP

  3. Ponownie zainstalowano WAMP, nie znaleziono tabel Wordpress, ALE są w PHPMYADMIN

  4. identyfikator użytkownika i hasło wamp server mysql

  5. Zmieniasz prefiksy nazw tabel w phpmyadmin?