2012-06-27 16 views
0

我有兩個表masterTbl和detailTbl其結構如下...如何在其他表中引用的表上應用truncate命令?

--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 '因爲它正被FOREIGN KEY約束所引用。「

如何使用TRUNCATE命令上masterTbl

回答

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 
+1

只有刪除的作品。禁用它們不會阻止錯誤。 –

+0

@MartinSmith thx,編輯。 –

+0

我使用的是IDENTITY(1,1),當我在刪除命令後插入新的一行時,我的下一行id會與之前的系列產生..但我不想... 我不想刪除外鍵Fk_mid ...任何解決方案? –

相關問題