MySQL如何判断某表是否存在主键,如果存在就删除主键,如果不存在就创建主键

如题所述

1查询主键 存在与否 如果存在count值为1 不存在count值为0
select count(*) PrimaryNum
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t
where t.TABLE_NAME ='test'
如果结果 >= 1,则表示有主键。
2删除存在的主键
alter table test drop primary key;
3.创建主键
alter table test add primary key(id);追问

这样是只能写在存储过程里面执行是吗,直接执行语句好像不行。

追答

可以直接执行的 但是要分多个查询窗口 不能一起执行。
不过直接执行语句只是用来查看效果的,如果要实现这个功能,需要放到存储过程里面执行

追问

刚才在存储过程里试了一下,如果>=1能删除主键,但是我发现删除前查出来的数值是4(但我只设置了两列为主键),删除后还能查出数值为2,这是怎么回事呢?感谢解答。

追答

可以把你的sql语句给我看下吗?

追问

我把表删除重建了一边就正常了,语句是能用的,只是不知道之前的表明明取消了主键还是能查出约束,外键,索引什么的都没有。

追答

你把sql语句发我看下 就这样我也不知道是什么情况

追问

分开执行是正常的,但主键和索引的放一起执行就会出现明明没有主键但是查出的@PrimaryNum确为2,导致删除主键异常

追答

select count(*) PrimaryNum
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t
where t.TABLE_NAME ='test'
and t.CONSTRAINT_NAME = 'PRIMARY'

你弄成这样试下

温馨提示:答案为网友推荐,仅供参考
相似回答