【发布时间】:2015-05-21 21:02:20
【问题描述】:
在 SQL Server 2012 及更低版本中使用 TSQL 从所有表中删除除查找表数据之外的所有数据的最佳方法是什么? 我希望 TSQL 识别并排除查找表,然后为其他表创建截断表语句。
** 几乎有a similar question,但它会截断所有表格。
【问题讨论】:
-
您认为查找表与其他表有何不同?他们的名字中有图案吗?如果您无法找到手动区分它们的方法,那么脚本不会。
-
假设我们使用 [FK_Parent_Child] 名称标准定义了我们的约束。即 ALTER TABLE [dbo].[Parent] WITH CHECK ADD CONSTRAINT [FK_Parent_Child] FOREIGN KEY([TypeID]) REFERENCES [dbo].[Child] ([ID])
-
@TheDot 当您从数据库中删除时,我个人会很犹豫地说,说我们定义了。您仍在做出假设,并且不确定如何区分您的表。对于您需要的表,您可能还有许多其他外键。外键并不总是在查找表和真实表之间产生关系。
-
不,这不是假设,它就是这样。我同意“外键并不总是在查找表-realt 表之间产生关系”,但在这种情况下,这正是数据库的设计方式。另外,我将我的 ID 更改为 TheStudent,对此感到抱歉。
-
这是一个测试数据库,所以不用担心。
标签: sql-server tsql