从SQL Server表中删除内容

时间:2015-06-30 17:34:32

标签: sql-server

我有几个包含内容的表格。有没有办法在不删除密钥(主键,外键等)的情况下删除所有内容?

当我说截断或删除时,它显然会返回错误。

  

无法截断表'login',因为它正被FOREIGN KEY约束引用。

1 个答案:

答案 0 :(得分:2)

你是对的,你不能在使用外键的表上运行truncate table。但是您可以在表本身上运行正常删除。

唯一需要注意的是订单。

例如: 您有一个表users和一个表users_log,您可以在其中存储所有用户登录。 如果来自users的行仍然引用它们,则无法在users_log表上运行删除。 如果您从users_log删除所有行,然后从users删除行,则一切都会正常。

在此特定示例中,此代码将起作用:

DELETE FROM users_log
DELETE FROM users

虽然这取得了成功:

DELETE FROM users
DELETE FROM users_log -- which has a foreign key constraint on users