如果我必须删除列O_CLIENT,那么正确的顺序是什么?
CREATE TABLE client (
C_ID int PRIMARY KEY AUTOINCREMENT,
....
);
CREATE TABLE order (
O_ID int PRIMARY KEY AUTOINCREMENT,
.......
O_CLIENT long FOREIGN KEY REFERENCES client(C_ID)
);
答案 0 :(得分:4)
您必须先删除关系,否则最终会出现外键约束错误。这是内置的,以保护您免于悬挂引用(即您删除客户端1,但仍然有3个订单绑定到客户端1.如果您尝试从订单中获取客户端,您将得到任何东西,这将是无效的)
您还可以查看级联删除,以便顶级删除,自动删除所有关系。然后你可以只执行一次清除所有内容的删除
答案 1 :(得分:1)
删除作为外键列的列(即从另一个表引用键)时,通常可以安全地删除该列。
这也将删除在此列上定义的外键约束。
答案 2 :(得分:1)
如果您是手动执行此操作,则首先需要删除该关系,然后删除该列。如果您通过工具(如MySql Workbench)执行此操作,它将为您解决此问题。