所以我试图理解为什么当我尝试截断表时SQL Server 2008 R2会抱怨。
我有两张桌子:
Parent (id, ..)
Child (id, parent_id, ..)
子表作为parent_id
表的FK约束(Parent
)。
现在,如果我尝试做:
truncate table Child
truncate table Parent
它给了我错误:
不能截断表'父'b / c它被FK引用 约束
即使我对两个表都进行删除,即表是空的,我也不能截断Parent
表。
为什么?
答案 0 :(得分:2)
Truncate更像是删除和重新创建表而不是删除内容。它不会进行检查等,因此如果清除数据 违反任何约束条件,则禁止进行检查。
答案 1 :(得分:0)
截断是DDL,而不是DML。
因此,如果您截断表,则告诉数据库删除该表并重新创建它。