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

SQLServerで制約の名前を見つける方法

    問題:

    SQLServerのテーブルで制約の名前を検索する必要があります。

    例:

    テーブルstudent

    解決策:

    SELECT TABLE_NAME,
           CONSTRAINT_TYPE,CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE TABLE_NAME=’student’;
    

    結果は次のとおりです。

    TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
    学生 主キー PK__student__3213E83F357C7D1D
    学生 ユニーク UQ__student__24E2EDD2AC2A7D87
    学生 チェック CK__student__age__4E88ABD4
    学生 外部キー FK__student__country__4F7CD00D

    ディスカッション:

    ビューtable_constraints information_schema スキーマ。列table_name 制約が定義されているテーブルの名前と、列constraint_nameが表示されます。 制約の名前が含まれます。列constraint_type 制約のタイプを示します:PRIMARY KEY 主キータイプの場合、FOREIGN KEY 外部キータイプの場合、UNIQUE 一意の値については、CHECK 制約チェック用。

    たとえば、student テーブルの制約名はPK_student_3213E83F357C7D1Dconstraint_type 列には、各制約のタイプに関する情報が表示されます。主キーの場合は、PRIMARY KEYです。 。 table_name このビューの列は、この制約が含まれているテーブルを示しています。

    ただし、DEFAULTを選択する場合 データベースからの制約については、以下のクエリを使用してください。

    SELECT c.name, c.definition
    FROM sys.default_constraints c
    JOIN sys.objects o ON o.object_id = c.parent_object_id
    WHERE o.name ='student';
    

    結果は次のとおりです。

    name 定義
    DF__student__name__4D94879B ( "不明")

    DEFAULTの名前 制約は列名に格納されますが、値は列definitionにあります 。ビューに参加するsys.default_constraint sおよびsys.objects 特定のテーブル(この例では、テーブルstudent )WHERE句を使用します。制約名には、テーブルの名前が含まれています(student )と列の名前(name


    1. 自分のドッグフードを食べる–MariaDBでJIRAを実行する

    2. 都市の列ごとに従業員の名前を配置する必要があります

    3. 変数を使用した動的クエリでIN句をどのように指定しますか?

    4. SQL Serverで日時を切り捨てるにはどうすればよいですか?