SQL Server Drop Table With Foreign Key Constraint (刪除資料表)
2024-06-05
筆記 SQL Server 如何處理「無法卸除物件 'dbo.TableName',因為 FOREIGN KEY 條件約束參考該物件。」的批次刪除資料表及條件約束的方式。
說明
首先透過 Script 找出所有的 Foreign Key Constraint 並進行刪除。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += 'ALTER TABLE ' + QUOTENAME(tp.name) +
' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';' + CHAR(13)
FROM
sys.foreign_keys AS fk
INNER JOIN
sys.tables AS tp ON fk.parent_object_id = tp.object_id;
PRINT @sql
--EXEC sp_executesql @sql;
接著就可以進行資料表刪除:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += 'DROP TABLE ' + QUOTENAME(name) + ';' + CHAR(13)
FROM
sys.tables;
PRINT @sql
--EXEC sp_executesql @sql;
EXEC 註解的部分是實際執行刪除的動作,在實際作業前應該要先備份並且透過 PRINT 檢視要刪除的標的是否正確,如果無誤才能夠解開註解執行 EXEC 😊