0
繼承了傳統的Sql server數據庫後,我希望按表列出所有沒有外鍵的整數列,因爲有些列將缺少FK,有些只是整數列。任何人都可以提出一個查詢來顯示這些信息?很明顯,這裏涉及到一些人爲干預。sql server 2008 - 無外鍵的整數列
謝謝。
繼承了傳統的Sql server數據庫後,我希望按表列出所有沒有外鍵的整數列,因爲有些列將缺少FK,有些只是整數列。任何人都可以提出一個查詢來顯示這些信息?很明顯,這裏涉及到一些人爲干預。sql server 2008 - 無外鍵的整數列
謝謝。
您可以從information_schema獲取。我開始是這樣的:
SELECT * from INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
ON
c.TABLE_CATALOG = k.TABLE_CATALOG
AND c.TABLE_SCHEMA = k.TABLE_SCHEMA
AND c.TABLE_NAME = k.TABLE_NAME
AND c.COLUMN_NAME = k.COLUMN_NAME
WHERE c.DATA_TYPE in ('int') AND CONSTRAINT_NAME is null
這一個使用SQL服務器只訪問量:
select so.name as TableName, col.name as ColumnName
from
sys.objects so
inner join sys.columns col on so.object_id = col.object_id and col.system_type_id in (48,52,56,127)
left outer join sys.foreign_key_columns fkc on fkc.parent_object_id = so.object_id and fkc.parent_column_id = col.column_id
where
so.type='U'
and fkc.constraint_column_id is null
order by so.name
此查詢不包括PK約束,但是某些列可能是int和PK,但不是FK – fnurglewitz
這並未不返回int不是外鍵但是是主鍵的列。 –
謝謝,這正是我想要的,它的工作原理。我不知道從哪裏開始,這爲我節省了很多時間。 – Oversteer