Comment faire, pour pouvoir tester si un index existe, pour le créer ou le détruire ?
La solution :
- Création d'une procédure stockée
Voici la procédure qui vous permet de faire le fameux : IF EXISTS , pour vos INDEX de tables :
DELIMITER $$
DROP PROCEDURE IF EXISTS `createIndex` $$
CREATE PROCEDURE `createIndex`
(
mydatabase VARCHAR(60),
mytable VARCHAR(60),
myindex VARCHAR(60),
mycolumns VARCHAR(60)
)
BEGIN
DECLARE IndexExist INTEGER;
SELECT COUNT(1) INTO IndexExist
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema = mydatabase
AND table_name = mytable
AND index_name = myindex;
IF IndexExist = 0 THEN
SET @sqlstmt = CONCAT('CREATE INDEX ',myindex,' ON ',
mydatabase,'.',mytable,' (',mycolumns,')');
PREPARE st FROM @sqlstmt;
EXECUTE st;
DEALLOCATE PREPARE st;
END IF;
END $$
DELIMITER ;
Maintenant il suffit de l'appeler, via un CALL et vous aurez plus d'erreur sur la création de vos INDEX dans vos scripts de déploiement.
Aucun commentaire:
Enregistrer un commentaire