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 Serverの:制約と外部キー
- 4. JavaからSQLiteに外部キー制約を適用するにはどうすればよいですか?
- 5. SQLの外部キー制約
- 6. 外部キーがNULLでない場合にのみ、2つのテーブル間で制約を定義するにはどうすればよいですか?
- 7. デフォルトの制約の制約をすべてテーブルにドロップする方法
- 8. SQL Server 2008で2つの外部キーを使用するにはどうすればよいですか?
- 9. Laravelは私が既に作成外部キー制約を持つテーブルを持っている外部キー制約
- 10. Django MySQLどのように外部キーの制約を停止するには?
- 11. MySQL:テーブルのすべての制約を表示するにはどうすればよいですか?
- 12. Sql Server:「外部キー制約を強制する」が「いいえ」に設定されていると、どのような利点がありますか?
- 13. 外部キー制約の失敗エラーを避けるにはどうすればいいですか?
- 14. テーブルに単純な外部キー制約を追加する
- 15. のMicrosoft SQL Serverは、外部キー制約の競合
- 16. SQL Server 2000のビューに制約を追加する
- 17. SQL Serverのwhere句での外部キー制約
- 18. mySQL 5でテーブルのすべての外部キー制約を一度に削除できますか?
- 19. SQL Server 2008 ExpressでSQL Server 2000データベースを開くにはどうすればよいですか?
- 20. テーブルに行を挿入する際の外部キー制約
- 21. SQL Serverのテーブルで外部キー関係の「深さ」を調べるにはどうすればよいですか?
- 22. Microsoft SQL Server 2012で外部キー制約を作成する方法は?
- 23. 外部キーにリンクされたテーブルをテストするにはどうすればよいですか?
- 24. 外部キーの制約がない「キー」とは何ですか?
- 25. netbeans sqlの外部キー制約を使用して参照整合性を行うにはどうすればよいですか?
- 26. 既存のSQLiteテーブルに外部キーを追加するにはどうすればよいですか?
- 27. 既存のテーブルに外部キーを追加するにはどうすればよいですか?
- 28. 外部キーを保存するにはどうすればよいですか?
- 29. 同じテーブルの異なる列の外部キーをカウントするにはどうすればよいですか?
- 30. SQL Server 2000で結果のサーバー側のページ付けを行うにはどうすればよいですか?
システムテーブルは異なりますが、SQL Server 2000でも同様です。http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr