次のようなSQLがあります:
ALTER TABLE dbo.ChannelPlayerSkins
DROP CONSTRAINT FK_ChannelPlayerSkins_Channels
しかし、どうやら、私たちが使用している他のデータベースでは、制約の名前が異なっています。 という名前の制約があるかどうかを確認するにはどうすればよいですかFK_ChannelPlayerSkins_Channels
。
ベストアンサー1
これを試して:
SELECT
*
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_NAME ='FK_ChannelPlayerSkins_Channels'
- 編集 -
最初にこの質問に答えたとき、元の質問では「FK_ChannelPlayerSkins_Channels」を見つけることについて尋ねられていたため、「外部キー」について考えていました。それ以来、多くの人が他の「制約」を見つけることについてコメントしており、そのための他のクエリをいくつか示します。
--Returns one row for each CHECK, UNIQUE, PRIMARY KEY, and/or FOREIGN KEY
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME='XYZ'
--Returns one row for each FOREIGN KEY constrain
SELECT *
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_NAME='XYZ'
--Returns one row for each CHECK constraint
SELECT *
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS
WHERE CONSTRAINT_NAME='XYZ'
ここに別の方法があります
--Returns 1 row for each CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY, and/or DEFAULT
SELECT
OBJECT_NAME(OBJECT_ID) AS NameofConstraint
,SCHEMA_NAME(schema_id) AS SchemaName
,OBJECT_NAME(parent_object_id) AS TableName
,type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT'
AND OBJECT_NAME(OBJECT_ID)='XYZ'
制約に関する詳細情報が必要な場合は、システム ストアド プロシージャ内を調べて、master.sys.sp_helpconstraint
特定の情報を取得する方法を確認してください。SQL Server Management Studio を使用してソース コードを表示するには、「オブジェクト エクスプローラー」に入ります。そこから、「Master」データベースを展開し、「プログラミング」、「ストアド プロシージャ」、「システム ストアド プロシージャ」の順に展開します。次に、「sys.sp_helpconstraint」を見つけて右クリックし、「変更」を選択します。変更を保存しないように注意してください。また、次のように使用することで、任意のテーブルでこのシステム ストアド プロシージャを使用することもできますEXEC sp_helpconstraint YourTableNameHere
。