首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Alter命令删除主键和外键

使用Alter命令删除主键和外键
EN

Stack Overflow用户
提问于 2014-03-04 03:57:49
回答 3查看 3.8K关注 0票数 0

我已经创建了三个表

创建表employee1 (eid,ename (25),email varchar(15));

创建表accounts1 (eid,accno,atype varchar(2),bal int);

创建表trans1(cid int,accno int,atype varchar(2),accno int,bal int);

使用命令我添加了主键和外键

更改表employee1添加主键(Eid);

alter accounts1添加外键(Eid)引用employee1(eid);

alter accounts1添加主键(accno,atype);

alter trans1添加外键(accno,atype)引用accounts1(accno,atype);

现在我的问题是,我试图删除所有表的所有主键和外键,这会给我带来错误。

最初,我尝试删除主键。然后,在参考下面的链接显示,外键必须首先删除,我试着这样做,但我仍然得到错误。MySQL5.5删除主键

错误:

mysql>修改表employee1删除约束;

错误1064 (42000):您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得正确的语法,以便在t行1附近使用“约束eid”。

mysql>修改表accounts1删除主键;

错误1025 (HY000):将‘.jlcindia#sql-B20_ 1’重命名为'.\jlcindia\accounts 1‘(errno: 150)

mysql>修改表employee1删除主键;

错误1025 (HY000):将‘.jlcindia#sql-B20_ 1’重命名为'.\jlcindia\employee 1‘(errno: 150)

mysql>修改表trans1删除外键;

错误1005 (HY000):无法创建表‘jlcindia。#SQL-B20_1 (errno: 150) mysql>显示引擎innodb状态

注意:我的表中没有自动增量或任何类似的内容。

我检查了以下链接,但没有任何帮助。

删除MySQL中的主键

mysql,alter列移除主键和自动递增

更改mysql表中的主键列时出错

如何使用SQL语法更改主键约束?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-04 05:54:43

您需要按以下顺序删除约束(这与创建键的顺序相反):

  • trans1中的外键
  • accounts1中的主键
  • accounts1中的外键
  • employee1中的主键

小提琴

票数 0
EN

Stack Overflow用户

发布于 2014-03-04 05:42:07

我认为,您首先需要删除表的外键--表的外键、accounts1.Then的外键、accounts1.then的主键、表*employee1 1 *的主键。

如果按此顺序删除外键和主键,则可以根据需要删除所有约束。

票数 0
EN

Stack Overflow用户

发布于 2016-05-09 10:20:38

首先,您需要找到与主键和外键相关的约束名。然后,您需要在删除键时使用这些约束名称。

代码语言:javascript
运行
复制
select *
from
information_schema.key_column_usage
where
table_name = 'my_table'

从上面的查询中,您将能够找到约束名称。

现在使用下面的语法删除键。

代码语言:javascript
运行
复制
ALTER TABLE tablename DROP CONSTRAINT constraint name 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22162595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档