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

Jak zapobiec niejawnemu zatwierdzeniu mysql?

Innym dziwacznym podejściem, które właśnie wypróbowałem z powodzeniem, jest pobranie pliku DDL do tworzenia tabeli za pomocą polecenia specyficznego dla mysql

SHOW CREATE TABLE `tableName`

Następnie zrób trochę magii wyrażeń regularnych i stwórz nowe zapytanie DDL, które utworzy tabelę tymczasową opartą na oryginalnej tabeli, ze wszystkimi zmianami alter table zawartymi w tabeli create.

W moim projekcie opartym na PHP wykonałem następujące czynności, aby dodać unikalny indeks do tabeli tymczasowej. To załatwiło sprawę i w trakcie transakcji nie nastąpiło żadne niejawne zatwierdzenie.

$createDDL = ... get from SHOW CREATE TABLE `tableName`
$nr = 0;
$createDDL = preg_replace("/CREATE TABLE `$tableName` \(/", "CREATE TEMPORARY TABLE `$tmpName` (\nUNIQUE `ukey-1` ($uniqCols),", $createDDL, -1, $nr);
if (!$nr)
  throw new Exception("CREATE TABLE replacement error. No reps made.");
mysqli_query($con, $createDDL);

EDYTUJ Przy okazji oto kilka raportów o błędach (funkcjach) (od wielu lat). W pierwszym można zobaczyć odpowiedź (z 2006 r.), która stwierdza:ponieważ to zachowanie jest takie samo jak w Oracle db, jest to spójne zachowanie...

Być może należy zainicjować „kampanię spamowania” z prośbą o funkcję, aby ta prośba została przywrócona!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie wierszy dodanych w ostatniej godzinie

  2. Projekt reprezentujący odprawę i wymeldowanie pracowników

  3. Jak zaktualizować z Select za pomocą opcji Join

  4. Java:Wstaw wiele wierszy do MySQL za pomocą PreparedStatement

  5. Usuwanie wierszy za pomocą MySQL LEFT JOIN