2012-01-25 80 views
-2

可能重复:
delete primary key row which is foreign key of another table删除主键列是另一个表的外键

Customers

CustomerID 

Addresses

AddressId 

Customers_Addresses

CustomerID 
AddressID 

Customer_person

CustomerID 
PersonID 

我想从一个CustomerID确定的Customer表中删除行,我想更新Addressescustomer_person表。

如何创建这样的查询?请帮帮我。

+0

不要问一个新问题,而是编辑您的旧问题以使其可以理解。你可能会发现[“写完美的问题”](http://tinyurl.com/so-hints)一个有用的指导方针。另外,不要使用ad-hoc模式,而应使用实际的[示例代码](http://sscce.org/)(SQL语句)作为表模式和示例数据。 – outis

回答

0

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

+1

您正在介绍未指定的业务逻辑。此外,数据类型是“位”,而不是布尔值。为什么不使用日期时间呢?为什么不使用varchar来指示删除的用户? –

0

您应该设置您的Fkey一些特定的选项,如ON DELETE {CASCADE,SET NULL,设置默认}

相反,你将无法删除引用的行,因为它是由SQL Server禁止由于诚信的完整性。

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

或者删除它太

或者,如果引用行有没有父行的一些意义 - 那么什么是错的与你的数据库设计 - 要么你不需要的Fkey或模式是没有正常化。

相关问题