sql >> データベース >  >> RDS >> Sqlserver

SQLサーバーに制約が存在するかどうかを確認するにはどうすればよいですか?

    これを試してください:

    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を使用してソースコードを表示するには、「オブジェクトエクスプローラー」にアクセスします。そこから、「マスター」データベースを展開し、次に「プログラマビリティ」、「ストアドプロシージャ」、「システムストアドプロシージャ」の順に展開します。次に、「sys.sp_helpconstraint」を見つけて右クリックし、「変更」を選択します。変更を保存しないように注意してください。また、このシステムストアドプロシージャは、EXEC sp_helpconstraint YourTableNameHereのように使用することで、任意のテーブルで使用できます。 。



    1. SQL Serverデータベース変更リスナーC#

    2. homebrewを使用してMACにPostgresqlでPHPをインストールする

    3. データをHerokuにプッシュするときのエラー:タイムゾーンの変位が範囲外です

    4. MariaDBでのEXPORT_SET()のしくみ