sql - 在所有表上禁用外键约束不起作用

标签 sql sql-server-2005

我尝试了很多命令来禁用数据库中的表约束以截断所有表,但现在它仍然给我同样的错误:

Cannot truncate table '' because it is being referenced by a FOREIGN KEY constraint.



我试试
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
EXEC sp_MSforeachtable "TRUNCATE TABLE ?"

我为每张 table 都试过这个
ALTER TABLE [Table Name] NOCHECK CONSTRAINT ALL  
truncate table [Table Name]
ALTER TABLE [Table Name] CHECK CONSTRAINT ALL  

每次我收到以前的错误消息时。我怎么解决这个问题?

最佳答案

如果要截断表,可能必须删除外键并将它们添加回来。来自 here .

“您不能在 FOREIGN KEY 约束引用的表上使用 TRUNCATE TABLE;相反,请使用不带 WHERE 子句的 DELETE 语句。因为 TRUNCATE TABLE 未记录,所以它无法激活触发器。”

类似问题 here在 SO。

关于sql - 在所有表上禁用外键约束不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482316/

相关文章:

sql-server - 带附件的数据库电子邮件(excel 文件/pdf 文件)?

sql - 遍历日期范围并在找不到数据时插入

sql-server-2005 - SQL选择: Using CTE as dataset for IN clause - syntax error

mysql - 使用 declare 时出现语法错误

sql - 统计所有直接或间接向经理汇报的下属

SQL Server 2000 XML 路径 ('') 错误

sql-server - SQL Server 2005 - 在不同的服务器上恢复加密的数据库

sql - 处理 200000 多条记录时查询非常非常慢

php - SQL - 选择两列之间的最大差异

mysql - SQL 对连接表的多个记录进行分组?