Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да предотвратим неявното извършване на mysql

Друг хакерски подход, който току-що опитах успешно, е да получа таблицата за създаване на DDL чрез специфичната команда за mysql

SHOW CREATE TABLE `tableName`

След това направете малко магия за редовни изрази и създайте нова DDL заявка, която ще създаде временна таблица, базирана на оригиналната таблица, с всички промени в таблицата за промяна, включени в таблицата за създаване.

В моя проект, базиран на PHP, направих следното, за да добавя уникален индекс към временна таблица. Това свърши работа и по време на транзакцията не се случи повече имплицитен комит.

$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);

РЕДАКТИРАНЕ Между другото, тук има някои доклади за грешки (функции) (от много години). В първия можете да видите отговор (от 2006 г.), който гласи:тъй като това поведение е същото като в oracle db, това е последователното...

Може би трябва да бъде инициирана заявка за функция „кампания за спам“, за да се съживи тази заявка за функция!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на заявката въз основа на условие

  2. Възможно ли е да се използва .mylogin.cnf файл в C# за установяване на връзка?

  3. Самостоятелен MySQL сървър

  4. Как да пренаредя колоните в MySQL Query Editor?

  5. php mysql функция с незадължителен параметър