无法在MySQL中删除外键

时间:2018-11-14 21:15:38

标签: mysql sql foreign-keys

这是“人与订单”之间的常见示例。我只是从Internet复制它作为测试。

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID) );

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(ID)
);

到现在,一切都成功了。但是如何删除外键PersonID?

我尝试过这个。

ALTER TABLE Orders
DROP FOREIGN KEY PersonID;

MySQL说:

  

1091-无法删除'PersonID';检查列/键是否存在

2 个答案:

答案 0 :(得分:3)

使用以下语句标识约束的名称:

SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Orders'
AND COLUMN_NAME = 'PersonID';

CONSTRAINT_NAME语句中使用ALTER TABLE的结果。例如:

ALTER TABLE Orders
DROP FOREIGN KEY `myconstraint`;

MySQL Reference Manual

得出的答案

答案 1 :(得分:0)

您需要删除约束以及键。首先通过执行以下

查找约束

1)显示创建表订单;

result will be something like this

在此屏幕快照“ fk_dayBreakUp_timetable”中获取CONSTRAINT ..的值

2)ALTER TABLE命令DROP外键《 >

您可以在

3)ALTER TABLE命令DROP键<<列名>>

希望这可以解决您的问题。