Differenze tra le versioni di "MySql:Cancellare un indice controllando prima se esiste"

(Creata pagina con "← Torna a MySQL Esempio: <pre> SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = '<nome-tabella>' and `index_name...")
 
(Esempio #2)
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
[[GENERALE#MySQL|&larr; Torna a MySQL]]
+
[[GENERALE#MySQL|&larr; Torna a MySQL]] [[Category:MySQL]]
  
Esempio:
+
== Articoli correlati ==
 +
* [[MySql:Eseguire una query solo se è verificata una condizione|Eseguire una query solo se è verificata una condizione]]
 +
 
 +
== Esempi ==
 +
=== Esempio #1 ===
 
<pre>
 
<pre>
 
SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = '<nome-tabella>' and `index_name` = '<nome-indice>' and `table_schema` = database());
 
SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = '<nome-tabella>' and `index_name` = '<nome-indice>' and `table_schema` = database());
 
SET @sqlstmt := IF( @exist > 0 , 'ALTER TABLE `<nome-tabella>` DROP INDEX `<nome-indice>`;', 'SELECT ''INFO: Indice non trovato.''');
 
SET @sqlstmt := IF( @exist > 0 , 'ALTER TABLE `<nome-tabella>` DROP INDEX `<nome-indice>`;', 'SELECT ''INFO: Indice non trovato.''');
 +
PREPARE stmt FROM @sqlstmt;
 +
EXECUTE stmt;
 +
</pre>
 +
 +
=== Esempio #2 ===
 +
<pre>
 +
SET @tabella = '<%PREFIX%>_messages';
 +
SET @indice = 'reference';
 +
SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = @tabella and `index_name` = @indice and `table_schema` = database());
 +
SET @sqlstmt := IF( @exist > 0 , CONCAT( 'ALTER TABLE ', @tabella, ' DROP INDEX ', @indice, ';' ), 'SELECT ''INFO: Indice non trovato.''');
 
PREPARE stmt FROM @sqlstmt;
 
PREPARE stmt FROM @sqlstmt;
 
EXECUTE stmt;
 
EXECUTE stmt;
 
</pre>
 
</pre>

Versione attuale delle 15:35, 14 apr 2023

← Torna a MySQL

Articoli correlati

Esempi

Esempio #1

SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = '<nome-tabella>' and `index_name` = '<nome-indice>' and `table_schema` = database());
SET @sqlstmt := IF( @exist > 0 , 'ALTER TABLE `<nome-tabella>` DROP INDEX `<nome-indice>`;', 'SELECT ''INFO: Indice non trovato.''');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;

Esempio #2

SET @tabella = '<%PREFIX%>_messages';
SET @indice = 'reference';
SET @exist := (SELECT COUNT(*) FROM information_schema.statistics WHERE `table_name` = @tabella and `index_name` = @indice and `table_schema` = database());
SET @sqlstmt := IF( @exist > 0 , CONCAT( 'ALTER TABLE ', @tabella, ' DROP INDEX ', @indice, ';' ), 'SELECT ''INFO: Indice non trovato.''');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;