Dameng で特定のテーブルの制約を見つける方法

一部の特定のシナリオでは、特定のテーブルの主キーやその他の制約情報を見つける必要があります。検索する必要があるテーブルに慣れていない場合は、システム ビューを使用して検索する必要があります。DM8 では、特定のテーブルの制約を見つけるために使用する必要がある制約ビューには、all_constraints と all_cons_columns が含まれます。

all_constraints には、制約の所有者、制約名、制約タイプ、制約が存在するテーブル名またはビュー名など、現在のユーザーが所有するすべての制約情報が含まれていますが、制約が配置されている特定のフィールドに関する情報はありません。制約が見つかりました。

情報のこの部分は、システム ビュー all_cons_columns で見つけることができます。all_cons_columns には、制約名、制約が配置されているテーブル名、制約が配置されている列名が含まれており、検索する必要がある特定のテーブルの主キー制約が配置されている列名を見つけることができます。接続クエリ。接続された列は CONSTRAINT_NAME で、これが制約名です。制約の作成時に制約名を指定できます。制約名が指定されていない場合は、「CONS」に数字の文字列を加えた制約名が自動的に生成されます。制約、制約名。名前は一意です。

2 つのビュー間の接続クエリでは、特定のテーブルの特定の列に対する制約を取得できます。制約タイプは合計 5 つあります: C はチェック制約を表し、P は主キー制約を表し、U は一意制約を表し、R は参照制約を表します。は外部キーであり、V はビューのチェック制約を表します。特定のテーブルの主キー制約を検索する必要がある場合は、where 句の条件を CONSTRAINT_TYPE='P' に制限して、主キーが存在する列を直接フィルタリングして除外できます。DMHR サンプル ライブラリで EMPLOYEE テーブルの主キーの列を検索する必要があるとします。検索方法は次のとおりです。

クエリ結果から、DMHR の下の EMPLOYEE テーブルの主キーは EMPLOYEE_ID 列であることがわかります。他のテーブルの制約情報も同様に検索できます。たとえば、all_constraints には参照制約に関する情報があり、この情報を使用して、参照制約の対応する所有者、テーブル名、列名に関する情報を見つけることができます。例は次のとおりです。

クエリを通じて、EMPLOYEE テーブルの DEPARTMENT_ID 列の参照制約が DEPARTMENT テーブルの DEPARTMENT_ID 列を参照し、JOB_ID 列の参照制約が JOB テーブルの JOB_ID 列を参照していることがわかります。このようにして、テーブル内のすべての外部キーによって参照される列を見つけることができます。

また、all_constraints ビューを通じてテーブル内のすべてのチェック制約を見つけたり、SEARCH_CONDITION フィールドを使用してテーブル内のすべてのチェック制約を見つけたりすることもできます。

    

ここでは、最も一般的な状況を示します。実際に発生する問題では、効果が遅延しているかどうか、データが制約ルールに準拠しているかどうか、制約が無効であるかどうかなど、制約の他の側面を理解する必要がある場合もあります。列に関するその他の情報については、関連するマニュアルやドキュメントを参照してください。

おすすめ

転載: blog.csdn.net/qq_35273918/article/details/130820264