2012-02-29 66 views
1

如果我必须删除列O_CLIENT,那么正确的顺序是什么?使用外键SQL删除列

  1. 删除关系;然后删除列O_CLIENT
  2. 删除列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) 
); 

回答

4

你必须先删除关系,否则你会最终有一个外键约束的错误。这是为了保护您免受悬挂引用(即删除客户端1,但仍有3个订单与客户端1绑定在一起)。如果您尝试从订单中获取客户端,则不会得到任何内容,这将是无效的)

您还可以查看级联删除,以便顶级删除自动删除所有关系。然后,您可以执行一次删除,以清除所有内容

1

删除作为外键列的列(即引用另一个表中的键)时,通常只需删除列即可。

这也将删除在此列上定义的外键约束。

1

如果您正在手动完成此操作,首先需要删除关系,然后删除该列。如果你是通过工具(如MySql Workbench)来完成这项工作,它会为你处理这个问题。

+0

对同一秒的很多评论:) – 2012-02-29 20:06:17