Dalším hackerským přístupem, který jsem právě úspěšně vyzkoušel, je získat tabulku pro vytvoření DDL pomocí specifického příkazu mysql
SHOW CREATE TABLE `tableName`
Pak udělejte nějaké kouzlo regulárního výrazu a vytvořte nový dotaz DDL, který vytvoří dočasnou tabulku založenou na původní tabulce, se všemi změnami alter tabulky začleněnými do tabulky vytvoření.
Ve svém projektu založeném na PHP jsem pro přidání jedinečného indexu do dočasné tabulky provedl následující. Povedlo se to a žádné další implicitní potvrzení se uprostřed transakce nevyskytlo.
$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);
UPRAVIT Mimochodem, zde jsou některé zprávy o chybách (funkcích) (již mnoho let). V první můžete vidět odpověď (z roku 2006), která říká:protože toto chování je stejné jako v oracle db, toto je konzistentní...
Možná by měla být zahájena žádost o funkci „kampaň proti spamu“, aby se tato žádost o funkci oživila!