如何使用T-SQL在SQL Server 2000的表中刪除所有外鍵約束?如何在Sql Server 2000的表中刪除所有外鍵約束?
13
A
回答
2
我想你會發現沒有簡單的方法來刪除SQL Server 2000中的表上的約束。也就是說,有很多人編寫腳本可以識別和刪除/禁用/重新創建外鍵限制。一個例子是在http://www.mssqltips.com/tip.asp?tip=1376 - 但我沒有在SQL Server 2000上測試過它。
編輯:這裏是另一個example爲您生成drop/create腳本。
13
如果簡單地禁用的約束是一個不錯的選擇,你可以使用:
ALTER TABLE myTable NOCHECK CONSTRAINT all
,那麼你可以切換回上簡單地使用:
ALTER TABLE myTable WITH CHECK CHECK CONSTRAINT all
如果您希望禁用所有的表約束您可以使用:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
-- enable all constraints
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
更多的問題:Can foreign key constraints be temporarily disabled using TSQL?
但是,如果您需要永久刪除約束條件,則可以使用this script posted on databasejurnal.com。
只是修改它稍微僅刪除外鍵
create proc sp_drop_fk_constraints
@tablename sysname
as
-- credit to: douglas bass
set nocount on
declare @constname sysname,
@cmd varchar(1024)
declare curs_constraints cursor for
select name
from sysobjects
where xtype in ('F')
and (status & 64) = 0
and parent_obj = object_id(@tablename)
open curs_constraints
fetch next from curs_constraints into @constname
while (@@fetch_status = 0)
begin
select @cmd = 'ALTER TABLE ' + @tablename + ' DROP CONSTRAINT ' + @constname
exec(@cmd)
fetch next from curs_constraints into @constname
end
close curs_constraints
deallocate curs_constraints
return 0
5
在這裏你去:(上SQL2000沒有測試,但應該沒問題)
生成 '禁用':
SELECT 'IF EXISTS (SELECT * FROM sys.foreign_keys
WHERE object_id = OBJECT_ID(N''[dbo].' + FK +''')
AND parent_object_id = OBJECT_ID(N''[dbo].' + PT + '''))
ALTER TABLE ' + PT + ' NOCHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
生成「啓用」:
SELECT 'ALTER TABLE ' + PT + ' WITH CHECK CHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
更新:糟糕,我以爲你想要所有的表:)你可以修改上面的單個表。
相關問題
- 1. 如何在SQL Server中存在外鍵約束的情況下刪除表?
- 2. SQL Server有條件的外鍵約束
- 3. 刪除SQL行忽略所有外鍵和約束
- 4. 刪除所有沒有外鍵約束的記錄
- 5. SQL和外鍵約束刪除
- 6. 刪除複製表的外鍵約束
- 7. 刪除Mysql表列與外鍵約束
- 8. SQL Server中的外鍵約束
- 9. 如何在SQL Server中刪除外鍵?
- 10. 從兩個具有外鍵約束的表中刪除
- 11. SQL Server 2005,強制實施外鍵約束和級聯刪除
- 12. 在SQL Server 2000中,如何刪除沒有主鍵的表中的指定行?
- 13. 自引用外鍵約束和刪除
- 14. 無法刪除外鍵約束
- 15. MySQL外鍵約束,級聯刪除
- 16. 如何僅在sql server中存在外鍵約束?
- 17. 外鍵約束SQL
- 18. 如何避免DB truncate中所有表的外鍵約束?
- 19. 無法刪除SQL Server中的主鍵約束
- 20. SQL Server外鍵約束好處
- 21. SQL Server 2008外鍵約束錯誤
- 22. 如何刪除表中的所有默認約束約束條件
- 23. 在Entity Framework中,如何使用外鍵約束刪除記錄?
- 24. SQL Server:刪除具有外鍵約束的行:事務是否可以覆蓋約束?
- 25. 程序刪除外鍵約束和刪除沒有行動
- 26. 如何在oracle中查找所有外鍵約束?
- 27. mysql刪除和外鍵約束
- 28. 如何將具有外鍵約束的記錄刪除到另一個表中?
- 29. SQL刪除更新外鍵主鍵約束
- 30. 從文件表刪除與外鍵約束
系統表是不同的,但在SQL Server 2000中命名相似:http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr 2011-09-08 13:33:09