私は現在使用しています...
select Table_Name, Column_name, data_type, is_Nullable
from information_Schema.Columns
...DataAccess レイヤーを生成する目的で、特定のデータベース内の列に関する情報を決定します。
これらの列がテーブルの主キーに含まれているかどうかに関する情報はどこから取得できますか?
私は現在使用しています...
select Table_Name, Column_name, data_type, is_Nullable
from information_Schema.Columns
...DataAccess レイヤーを生成する目的で、特定のデータベース内の列に関する情報を決定します。
これらの列がテーブルの主キーに含まれているかどうかに関する情報はどこから取得できますか?
これが1つの方法です(「keycol」を検索している列名に置き換えます):
SELECT K.TABLE_NAME ,
K.COLUMN_NAME ,
K.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME
AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG
AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA
AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND K.COLUMN_NAME = 'keycol';
同様に、以下では、特定の列に関する情報ではなく、すべてのテーブルとそのキーに関する情報を提供します。このようにして、関心のあるすべての列があり、それらが何に参加しているかを確認します。すべてのキー(プライマリ、外部、一意)を表示するには、WHERE句にコメントを付けます。
SELECT K.TABLE_NAME, C.CONSTRAINT_TYPE, K.COLUMN_NAME, K.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K
ON C.TABLE_NAME = K.TABLE_NAME
AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG
AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA
AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY'
ORDER BY K.TABLE_NAME, C.CONSTRAINT_TYPE, K.CONSTRAINT_NAME