ALTER TABLE p DROP FOREIGN KEY fk_time;
这个删除外键不是很严密 有没有什么方法 
让 这个语句  判断如果存在外键那么删除.类似如下:
DROP TABLE IF EXISTS
DROP TRIGGER IF EXISTS   询问有没有类似判断外键或者索引 , 如果存在就删除的sql写法(mysql)  

解决方案 »

  1.   

    drop CONSTRAINT if exists bb.ba_ibfk_1; drop  foreign key if exists .....   都失败
      

  2.   

    MySQL 中不支持。自己写程序进行判断吧。SELECT CONSTRAINT_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS 
    where CONSTRAINT_SCHEMA='mydb'
    and CONSTRAINT_NAME='ba_ibfk_1'
    and TABLE_NAME='bb'然后知道有无这个外键,然后删除。
      

  3.   

    ALTER TABLE p DROP FOREIGN KEY fk_time; SELECT CONSTRAINT_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS
    where CONSTRAINT_SCHEMA='mydb'
    and CONSTRAINT_NAME='ba_ibfk_1'
    and TABLE_NAME='bb' 有没有办法不些存储过程 写在一起
      

  4.   

    思考可以如sqlserver一样
    先地定义一个变量  
    declare @a
    set @a=SELECT CONSTRAINT_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS
    where CONSTRAINT_SCHEMA='mydb'
    and CONSTRAINT_NAME='ba_ibfk_1'
    and TABLE_NAME='bb' if @a<>''
    drop  foregn key;
    end if