問題:
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_3213E83F357C7D1D 。 constraint_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 。