0

特定のテーブルに関する列の詳細を見つける必要があります。これには、テーブルが現在使用している参照テーブル名や参照列名などの外部キーに関する詳細が含まれます。現在、テーブルに外部キーが含まれているかどうかを返すため、このようなクエリを使用しましたが、参照されたテーブル名などに関する情報は表示されません。私は自分の側から多くの方法を試しましたが、正確なデータを取得できませんでした。sys.foreign_key_columnssys.foreign_keysを使用するには、バグがあります。適切に配置していない可能性があります。

SELECT  sys.columns.column_id AS ColumnId,sys.columns.name AS ColumnName,
sys.types.name AS Datatype,(SELECT COUNT(column_name) FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
 WHERE TABLE_NAME = sys.tables.name AND CONSTRAINT_NAME =(   SELECT  constraint_name FROM 
 INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = sys.tables.name AND constraint_type = 
 'PRIMARY KEY' AND COLUMN_NAME = sys.columns.name ) ) AS IsPrimaryKey, ( SELECT COUNT(column_name)
   FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE  WHERE TABLE_NAME = sys.tables.name AND CONSTRAINT_NAME 
  = ( SELECT  constraint_name  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS  WHERE  TABLE_NAME = sys.tables.name 
  AND constraint_type = 'Foreign key' AND COLUMN_NAME = sys.columns.name  )  )   AS IsForeignkey,
    sys.columns.max_length  AS Lenght /*BUG*/
     FROM  sys.columns, sys.types, sys.tables WHERE  
    sys.tables.object_id = sys.columns.object_id AND sys.types.system_type_id = sys.columns.system_type_id 
    AND sys.types.user_type_id = sys.columns.user_type_id AND sys.tables.name ='tablename' ORDER BY columnid 

sys.foreign_key_columnssys.foreign_keysを使用しようとしましたが、バグが発生しました。適切に配置していない可能性があります。

4

1 に答える 1

0

これがあなたが探しているものだと思います。

于 2012-04-09T10:35:39.823 に答える