删除主键行,它是另一个表的外键

时间:2012-01-25 04:42:02

标签: sql sql-server-2008

  

可能重复:
  delete primary key row which is foreign key of another table

Customers

CustomerID

Addresses

AddressId

Customers_Addresses

CustomerID
AddressID

Customer_person

CustomerID
PersonID

我想从Customer标识的CustomerID表中删除一行,我想更新Addressescustomer_person表。

如何创建此类查询?请帮帮我。

2 个答案:

答案 0 :(得分:0)

您应该在FKey上设置一些特定选项,例如ON DELETE {CASCADE,SET NULL,SET DEFAULT}

相反,您将无法删除引用的行,因为由于引用完整性,sql server禁止它。

因此,选项是将引用表的值设置为NULL或任何其他DEFAULT值。

也将其删除

,如果你的引用行有一些没有父行的含义 - 那么你的数据库设计有问题 - 你不需要FKey或架构不是归一化的。

答案 1 :(得分:-1)

你不应该删除你的记录,而是使用这种方法。使用布尔数据类型创建一个名为“isDeleted”的列。默认值为“false”。现在,只要你想删除任何记录,只需将该记录设为“true”即可。进行更改在您的选择查询中,仅选择isDeleted = false;

的记录