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

时间:2014-03-04 03:57:49

标签: mysql sql database primary-key alter-table

我创建了三个表

create table employee1(eid int,ename varchar(25),email varchar(15));

create table accounts1(eid int,accno int,atype varchar(2),bal int);

create table trans1(cid int,accno int,atype varchar(2),accounts int,bal int);

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

alter table employee1 add primary key(eid);

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

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

alter table trans1 add foreign key(accno,atype)引用accounts1(accno,atype);

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

最初我尝试删除主键。然后在引用以下链接时向我显示必须首先删除外键并且我尝试这样做但仍然是我收到错误。 MYSQL 5.5 Drop Primary Key

错误:

的MySQL> alter table employee1 drop constraint eid;

错误1064(42000):您的SQL语法有错误;查看corres手册 池塘到您的MySQL服务器版本,以便在'constraint eid'附近使用正确的语法a 第1行

的MySQL> alter table accounts1 drop primary key;

ERROR 1025(HY000):将'。\ jlcindia#sql-b20_1'重命名为'。\ jlcindia \ accounts时出错 1'(错误号码:150)

的MySQL> alter table employee1 drop primary key;

ERROR 1025(HY000):将'。\ jlcindia#sql-b20_1'重命名为'。\ jlcindia \ employee时出错 1'(错误号码:150)

的MySQL> alter table trans1 drop foreign key;

ERROR 1005(HY000):无法创建表'jlcindia。#sql-b20_1'(错误号:150) MySQL的> show engine innodb status

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

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

Remove Primary Key in MySQL

mysql, alter column remove primary key and auto incremement

Error altering primary key column in mysql table

How can I alter a primary key constraint using SQL syntax?

3 个答案:

答案 0 :(得分:0)

我认为,你需要首先删除 trans1 的外键。然后删除表 accounts1 的外键。然后尝试删除表 accounts1 的主键。然后删除表* employee1 * 的主键。

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

答案 1 :(得分:0)

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

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

fiddle

答案 2 :(得分:0)

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

select *
from
information_schema.key_column_usage
where
table_name = 'my_table'

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

现在使用以下语法删除键。

ALTER TABLE tablename DROP CONSTRAINT constraint name