Differenze tra le versioni di "MySql:Cancellare un indice controllando prima se esiste"
(→Esempio) |
|||
Riga 4: | Riga 4: | ||
* [[MySql:Eseguire una query solo se è verificata una condizione|Eseguire una query solo se è verificata una condizione]] | * [[MySql:Eseguire una query solo se è verificata una condizione|Eseguire una query solo se è verificata una condizione]] | ||
− | == Esempio == | + | == 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 = 'aker_accountingcostcenterdetails'; | ||
+ | SET @indice = 'accountingcostcenter_id'; | ||
+ | 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 delle 15:34, 14 apr 2023
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 = 'aker_accountingcostcenterdetails'; SET @indice = 'accountingcostcenter_id'; 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;