【问题标题】:How to truncate multiple tables if the table has dependencies如果表具有依赖关系,如何截断多个表
【发布时间】:2021-09-13 02:11:31
【问题描述】:

如果表有依赖关系,我想截断多个表。我尝试了StackOverflow 的几个解决方案,例如Solution 1 但似乎不起作用。

表结构如下:

  CREATE TABLE AEvent (
        eID int NOT NULL,   
        startTime datetime NOT NULL,
        endTime datetime NULL,  
        CONSTRAINT PK_A_EVENT PRIMARY KEY NONCLUSTERED (eID)
    );
        
    CREATE TABLE AEParam (
        eID int NOT NULL REFERENCES AEvent(eID),
        name nvarchar (446) NOT NULL,
        value nvarchar (2048) NULL,
        CONSTRAINT PK_A_E_PARAM PRIMARY KEY NONCLUSTERED (eID, name)
    );

我尝试使用以下查询截断,但似乎不起作用。

SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME in ('AEvent','AEParam')

【问题讨论】:

  • 您的查询结果不会截断任何内容,然后您必须运行它。请发布您找到的解决方案的链接。
  • 嗨@DaleK,您能否提供截断两个表的脚本。正如我提到的,存在依赖关系。
  • 或者直接复制这个帖子dba.stackexchange.com/questions/190073/…
  • 这里是链接@DaleK。 stackoverflow.com/questions/15926826/…
  • 嗨@DaleK,你能为我提供解决方案吗?我可以看到很多答案,但没有这样做的例子。

标签: sql-server truncate


【解决方案1】:

我找到了答案。这就是我截断表格的方式。

Truncate table AEParam
ALTER TABLE [dbo].[AEParam] DROP CONSTRAINT [FK_AEvent _AEParam]
Truncate table AEvent
ALTER TABLE [dbo].[AEParam]  WITH NOCHECK ADD CONSTRAINT [FK_AEvent_AEParam] FOREIGN KEY([eID])
REFERENCES [dbo].[AEvent] ([eID])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2019-03-31
    • 2017-10-10
    • 2014-09-06
    • 1970-01-01
    • 2019-09-03
    相关资源
    最近更新 更多