0

我有两个表 masterTbl 和 detailTbl,其结构如下所示......

--PRIMARY TABLE
CREATE TABLE masterTbl (
id INT IDENTITY(1,1) CONSTRAINT pk_id PRIMARY KEY, 
name VARCHAR(100) NOT NULL, 
description VARCHAR(max))

--FORIGN TABLE
CREATE TABLE detailTbl (
id INT IDENTITY(1,1) PRIMARY KEY,
m_id INT NOT NULL CONSTRAINT fk_mid FOREIGN KEY REFERENCES masterTbl(id) ON DELETE CASCADE,
details VARCHAR(MAX))

我要表演

TRUNCATE TABLE masterTbl 

但它遇到错误“无法截断表'testDB.dbo.masterTbl',因为它被外键约束引用。”

如何在masterTbl上使用TRUNCATE命令?

4

1 回答 1

3

您必须删除 FK 约束fk_mid。但是如果不遵守 FK 约束,您将无法将其放回原处,因为CASCADE REMOVE不会发生(孤儿风险)

或使用DELETE代替TRUNCATE. 这将保留DELETE CASCADE行为。

编辑

DELETE FROM dbo.masterTbl;
DBCC CHECKIDENT ('dbo.masterTbl', RESEED, 0) -- will set IDENTITY count back to 0
于 2012-06-27T08:31:14.350 回答