T-SQLを使用してSQL Server 2000のテーブルにすべての外部キー制約をドロップするにはどうすればよいですか?Sql Server 2000のテーブルにすべての外部キー制約をドロップするにはどうすればよいですか?
13
A
答えて
2
SQL Server 2000のテーブルに制約を簡単にドロップする方法はないと思います。つまり、外部キーを特定/削除/再作成できるスクリプトを書いた人がたくさんいます制約。 1つの例はhttp://www.mssqltips.com/tip.asp?tip=1376です - しかし、私はSQL Server 2000でそれをテストしていません。
EDIT:あなたのためのドロップ/作成スクリプトを生成する別のexampleです。
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でテストされますが、[OK]をする必要がありません)
が '無効' 生成:
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. JavaからSQLiteに外部キー制約を適用するにはどうすればよいですか?
- 5. デフォルトの制約の制約をすべてテーブルにドロップする方法
- 6. 外部キーがNULLでない場合にのみ、2つのテーブル間で制約を定義するにはどうすればよいですか?
- 7. Django MySQLどのように外部キーの制約を停止するには?
- 8. MySQL:テーブルのすべての制約を表示するにはどうすればよいですか?
- 9. Sql Server:「外部キー制約を強制する」が「いいえ」に設定されていると、どのような利点がありますか?
- 10. 外部キー制約の失敗エラーを避けるにはどうすればいいですか?
- 11. mySQL 5でテーブルのすべての外部キー制約を一度に削除できますか?
- 12. SQL Server 2000のビューに制約を追加する
- 13. Microsoft SQL Server 2012で外部キー制約を作成する方法は?
- 14. 外部キーの制約がない「キー」とは何ですか?
- 15. 外部キーにリンクされたテーブルをテストするにはどうすればよいですか?
- 16. SQLエラーの外部キー制約
- 17. SQL Server 2005 + Entity Designer - 外部キーの制約エラー?
- 18. SQL Server 2008 ExpressでSQL Server 2000データベースを開くにはどうすればよいですか?
- 19. 既存のSQLiteテーブルに外部キーを追加するにはどうすればよいですか?
- 20. 既存のテーブルに外部キーを追加するにはどうすればよいですか?
- 21. Nullable外部キー制約
- 22. デバッグ外部キー制約エラー
- 23. 参照するフィールドがオートインクリメントしているときに、外部キー制約を効率的に模倣するにはどうすればよいですか?
- 24. 外部キー制約
- 25. 外部キー制約を与えるためにテーブルを変更する
- 26. 主キー制約をプログラムで無効にするにはどうすればよいですか?
- 27. テーブルに多数の(20 +以上の)外部キー制約がある場合、それは欠点ですか?
- 28. テーブルに外部キー制約を追加できません
- 29. SQL Server 2000で結果のサーバー側のページ付けを行うにはどうすればよいですか?
- 30. ファイルから外部キー制約付きのMySQLテーブルにデータをロードする
システムテーブルは異なりますが、SQL Server 2000でも同様です。http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr