我想了解如何從MS SQL數據庫中獲取具有標識列的所有表的列表。如何獲取具有標識列的所有表的列表
16
A
回答
35
SELECT
[schema] = s.name,
[table] = t.name
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
ON s.[schema_id] = t.[schema_id]
WHERE EXISTS
(
SELECT 1 FROM sys.identity_columns
WHERE [object_id] = t.[object_id]
);
7
select COLUMN_NAME, TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA = 'dbo'
and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
order by TABLE_NAME
4
我喜歡這種方法,因爲它使用WHERE EXISTS或COLUMNPROPERTY呼叫的,而不是加入的。需要注意的是該集團是唯一必要的,如果你一)有表有一個以上的IDENTITY列和b)不想重複結果:
SELECT
SchemaName = s.name,
TableName = t.name
FROM
sys.schemas AS s
INNER JOIN sys.tables AS t ON s.schema_id = t.schema_id
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
INNER JOIN sys.identity_columns AS ic on c.object_id = ic.object_id AND c.column_id = ic.column_id
GROUP BY
s.name,
t.name
ORDER BY
s.name,
t.name;
-1
選擇OBJECT_NAME(OBJECT_ID)RROM sys.identity_columns 其中is_identity = 1;
0
下面的腳本就可以了:
SELECT a.name as TableName,
CASE WHEN b.name IS NULL
THEN 'No Identity Column'
ELSE b.name
END as IdentityColumnName
FROM sys.tables a
LEFT JOIN sys.identity_columns b on a.object_id = b.object_id
相關問題
- 1. 插入到具有標識列的表
- 2. 獲取所有子序列的列表
- 3. 如何獲取所有賣家列表?
- 4. 如何獲取Yocto中所有可用目標的列表?
- 5. 如何識別表是否具有標識列
- 6. 如何使用列表webservice獲取所有列表項目
- 7. 如何創建具有標識列的表格
- 8. data.frames的索引列表 - 如何獲取所有第x列?
- 9. 獲取所有型號的列表
- 10. 獲取所有PostScript字典的列表
- 11. iptables:獲取所有源IP的列表
- 12. android dexclassloader獲取所有類的列表
- 13. 獲取所有產品的列表
- 14. 獲取所有JADE容器的列表
- 15. 獲取列表中的所有成員
- 16. 獲取所有XML屬性的列表
- 17. 獲取Android中所有Windows的列表
- 18. 獲取所有表的列和類型
- 19. 獲取所有位置的列表
- 20. QT - 獲取所有QPushButton的列表
- 21. 獲取所有選中值的列表
- 22. 獲取所有本地類的列表
- 23. JBPM - 獲取所有任務的列表
- 24. 獲取散列表中的所有值
- 25. 獲取包含具有最大值的列表的列表
- 26. 訪問:獲取數據庫中具有「unicode壓縮」的所有列的列表
- 27. 如何從關係表中獲取所有父母的列表
- 28. 如何獲得所有行中具有'NULL'的所有日期列表
- 29. 獲取具有唯一子列表的列表
- 30. 如何獲得列表中所有密鑰的密鑰列表?
也請提供某種解釋,同時回答問題.. – Lal
請添加代碼的簡要說明。僅有代碼的答案(有時)很好,但代碼+解釋答案(總是)更好。 – Barranka