I actually suggested that last night, and thought better of it because
the alter ignore was so much simpler...

On Dec 3, 2007 11:18 AM, Rolando Edwards <[EMAIL PROTECTED]> wrote:
> You may want to check to see if the index exists first.
> Just query the table INFORMATION_SCHEMA.STATISTICS:
>
> SELECT COUNT(1) FROM INFORMATION_SCHEMA.STATISTICS
> WHERE table_schema = '<given schema>'
> AND table_name = '<given table name>'
> AND index_name = '<given index name>';
>
> This returns the number of columns the index contains.
>
> If this query returns zero(0), then the index does not exist.
>
> If this query returns a positive number, then call
> ALTER TABLE <tbl-name> DROP INDEX <index-name>;
>
> You may want to write this stored procedure to do this.
> Here is the Code (change the 'util' schema to the schema you want) :
>
> DELIMITER $$
>
> DROP PROCEDURE IF EXISTS `util`.`sp_DropIndex` $$
> CREATE PROCEDURE `util`.`sp_DropIndex` (tblSchema VARCHAR(64),tblName 
> VARCHAR(64),ndxName VARCHAR(64))
> BEGIN
>
>     DECLARE IndexColumnCount INT;
>     DECLARE SQLStatement VARCHAR(256);
>
>     SELECT COUNT(1) INTO IndexColumnCount
>     FROM information_schema.statistics
>     WHERE table_schema = tblSchema
>     AND table_name = tblName
>     AND index_name = ndxName;
>
>     IF IndexColumnCount > 0 THEN
>         SET SQLStatement = CONCAT('ALTER TABLE `',tblSchema,'`.`',tblName,'` 
> DROP INDEX `',ndxName,'`');
>         SET @SQLStmt = SQLStatement;
>         PREPARE s FROM @SQLStmt;
>         EXECUTE s;
>         DEALLOCATE PREPARE s;
>     END IF;
>
> END $$
>
> DELIMITER ;
>
> Give it a try !!!
>
>
> -----Original Message-----
> From: Rob Wultsch [mailto:[EMAIL PROTECTED]
> Sent: Monday, December 03, 2007 12:51 PM
> To: Adam Lipscombe
> Cc: mysql@lists.mysql.com
> Subject: Re: how to "drop index if exists"
>
> On Nov 29, 2007 4:34 AM, Adam Lipscombe <[EMAIL PROTECTED]> wrote:
> > Folks
> >
> >
> > How can one conditionally drop an index in MySQL?
> >
> > Googling shows that the "drop index" does not support an "if exists" 
> > qualifier - apparently a bug
> > has been raised but as far as I know its not fixed yet.
> >
> > Does anyone know of a work-around?
> >
> > TIA - Adam
> >
>
> Sent my first response late at night and not the community... And the
> response  also sucked.
> DROP INDEX is mapped to ALTER TABLE tbl_name
>  DROP INDEX.
> ALTER IGNORE TABLE tbl_name
>  DROP INDEX ought to be functionally equivalent to IF EXISTS. What is your 
> goal?
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
>
>



-- 
Rob Wultsch
(480)223-2566
[EMAIL PROTECTED] (email/google im)
wultsch (aim)
[EMAIL PROTECTED] (msn)

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to