带有外键的SQL删除列

时间:2012-02-29 20:01:31

标签: sql foreign-keys

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

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

3 个答案:

答案 0 :(得分:4)

您必须先删除关系,否则最终会出现外键约束错误。这是内置的,以保护您免于悬挂引用(即您删除客户端1,但仍然有3个订单绑定到客户端1.如果您尝试从订单中获取客户端,您将得到任何东西,这将是无效的)

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

答案 1 :(得分:1)

删除作为外键列的列(即从另一个表引用键)时,通常可以安全地删除该列。

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

答案 2 :(得分:1)

如果您是手动执行此操作,则首先需要删除该关系,然后删除该列。如果您通过工具(如MySql Workbench)执行此操作,它将为您解决此问题。