sql-server - 如何从属于 SQL Server 2012 数据库中特定模式的所有表中删除所有行?

标签 sql-server database tsql

我想删除属于 SQL Server 2012 数据库中特定模式的所有表中的所有行。

我在尝试从架构中的所有表中删除数据时遇到问题,我在这里做错了什么?

EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable @command1='Truncate Table ?',@whereand='and Schema_Id=Schema_id(''info'')'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ?'
GO

我遇到了错误

Msg 547, Level 16, State 0, Line 1 The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK__PayElemen__RealY__25476A76". The conflict occurred in database "Saina", table "info.iYear", column 'Year'.

有人可以帮我解决这个问题吗?

最佳答案

您将需要删除约束。或者,使用 DELETE FROM

EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable @command1='Delete ?',@whereand='and Schema_Id=Schema_id(''info'')'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ?'
GO

关于sql-server - 如何从属于 SQL Server 2012 数据库中特定模式的所有表中删除所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44667572/

相关文章:

node.js - Mongoose 查找和删除

sql - 如何避免在 sql 查询中使用多个 CAST?

sql-server - 从一个表中提取名称,除非另一表中存在行

sql-server - 如何配置 SQL Server 以允许通过 IIS 访问

sql-server - 使用 T SQL 在索引 View 上生成主键

database - postgres中区间数据类型的插入语法

php - 从mysql数据库中选择查询

sql-server - 如何使用每行的总计列来透视查询结果

sql - 检测存储过程中的脏读

sql-server - 在 SQL Server 中创建 View 时忽略依赖关系