我需要一個表的主鍵的名稱和主鍵列名,請告訴我,我應該寫什麼查詢..請告訴我如何在SQL Server,獲取主鍵名2005
回答
declare @tableName as nvarchar(100)
set @tableName = 'table'
select i.name, c.name
from sys.index_columns ic
join sys.indexes i on ic.index_id=i.index_id
join sys.columns c on c.column_id=ic.column_id
where
i.[object_id] = object_id(@tableName) and
ic.[object_id] = object_id(@tableName) and
c.[object_id] = object_id(@tableName) and
is_primary_key = 1
爲什麼只有100個? Sysname可以是128. – MartW 2010-01-07 09:11:55
沒有理由,真的。我只用了一個偶數。 – 2010-01-07 09:24:09
@Jonas:128也是,:-) – 2010-01-07 09:58:26
不太你在做什麼尋找,但你可以發揮與它周圍:
SQL 2000: T-SQL to get foreign key relationships for a table
下面是一個使用INFORMATION_SCHEMA視圖的另一種選擇
SELECT
cu.Table_Catalog,
cu.Table_Schema,
cu.table_name,
cu.Constraint_name ,
cu.column_name
FROM
sys.indexes si
inner join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu
on si.name = cu.constraint_name
WHERE
is_primary_key = 1
+1這是比數據庫特定的sys表更好。 (@soslo:它可以有多慢?:) – 2010-07-09 11:57:02
只是一個性能說明 - 使用sys表的選擇速度比使用INFORMATION_SCHEMA視圖的select快幾個數量級
- 1. 獲取在SQL Server 2005中
- 2. 如何增加在SQL Server在INSERT語句中的主鍵2005
- 3. 請告訴我
- 4. 更改SQL Server 2005中的主鍵值
- 5. 請告訴我如何使用C#
- 6. SQL Server sys.dm_broker_activated_tasks告訴我什麼?
- 7. 請告訴我代碼(//-\\.*)
- 8. 如何在SQL Server 2005中讀取xml?
- 9. 請告訴我的 ')' 在statment
- 10. SQL Server 2005 - 如何知道一個字段是否是主鍵?
- 11. 請告訴我如何寫一個獨特的sql語句
- 12. 如何提取MS SQL Server表的主鍵列的名稱?
- 13. 如何在SQL Server 2005/2008
- 14. 如何在SQL Server [2005]
- 15. 如何從IndexID爲獲得索引名稱在SQL Server 2005
- 16. SQL Server 2005從用戶名獲取登錄名
- 17. 請告訴我,如何安裝預建主題離子?
- 18. SQL Server 2005外鍵級聯
- 19. 請告訴我OpenSSL中
- 20. 請告訴我如何停止連續搜索在Visual Studio
- 21. 如何在sql server 2005中獲取用戶創建的模式
- 22. 如何在引導SQL Server 2005 Express時獲取DefaultInstance
- 23. 從我的SQL中獲取XML SQL Server 2005數據
- 24. 在SQL Server 2005
- 25. 在SQL Server 2005
- 26. 在SQL Server 2005
- 27. 在SQL Server 2005
- 28. 在SQL Server 2005
- 29. 在SQL Server 2005
- 30. 在SQL Server 2005
我假定您正在開發某種通用數據庫實用程序;否則你應該**知道**這個信息已經。我會寫一個查詢系統表sysobects和sysindexes來獲取這些信息。但是,我知道MS在SQL Server的更高版本中提供了有用的元數據視圖;你會更好地使用這些。 – 2010-01-07 08:05:01
你的問題的結果是,你期望主鍵只能引用一列 - 這遠遠不是真的。當然,不是每個桌子都有一個PK – MartW 2010-01-07 09:09:35