为什么我不能截断由FK约束引用的表?

时间:2011-10-06 14:18:41

标签: sql-server sql-server-2008-r2

所以我试图理解为什么当我尝试截断表时SQL Server 2008 R2会抱怨。

我有两张桌子:

  • Parent (id, ..)
  • Child (id, parent_id, ..)

子表作为parent_id表的FK约束(Parent)。

现在,如果我尝试做:

truncate table Child
truncate table Parent

它给了我错误:

  

不能截断表'父'b / c它被FK引用   约束

即使我对两个表都进行删除,即表是空的,我也不能截断Parent表。

为什么?

2 个答案:

答案 0 :(得分:2)

Truncate更像是删除和重新创建表而不是删除内容。它不会进行检查等,因此如果清除数据 违反任何约束条件,则禁止进行检查。

答案 1 :(得分:0)

截断是DDL,而不是DML。

因此,如果您截断表,则告诉数据库删除该表并重新创建它。