2017-02-02 23 views
0

我正在處理不同的數據庫。我需要編寫一個查詢將返回表名具有數據類型uniqueidentifier一個主鍵,這對缺省值或沒有默認值綁定查詢返回SQL Server中沒有默認值或主鍵綁定的表格

enter image description here

任何人都可以幫我嗎?提前致謝。

+0

[題外話]你爲什麼在主鍵列創建默認約束?我沒有看到它的任何用處。最大默認值只能插入一次 –

+0

我還沒有創建任何默認約束。這是由其他人創建的舊數據庫,但我必須處理它。 – pedram

+0

看看[這裏](http://stackoverflow.com/questions/3930338/sql-server-get-table-primary-key-using-sql-query)和[這裏](http://stackoverflow.com /問題/ 95967 /怎麼辦,你列表最主鍵的-A-SQL服務器表)。 –

回答

0

我更喜歡使用INFORMATION_SCHEMA的:

SELECT C.TABLE_CATALOG, 
     C.TABLE_SCHEMA, 
     C.TABLE_NAME, 
     C.COLUMN_NAME, 
     C.DATA_TYPE, 
     C.COLUMN_DEFAULT 
FROM INFORMATION_SCHEMA.COLUMNS C 
     INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE U 
      ON C.TABLE_CATALOG = U.TABLE_CATALOG 
       AND C.TABLE_SCHEMA = U.TABLE_SCHEMA 
       AND C.TABLE_NAME = U.TABLE_NAME 
       AND C.COLUMN_NAME = U.COLUMN_NAME 
WHERE OBJECTPROPERTY(OBJECT_ID(U.CONSTRAINT_SCHEMA + '.' + QUOTENAME(U.CONSTRAINT_NAME)), 'IsPrimaryKey') = 1 
     AND C.DATA_TYPE = 'uniqueidentifier' 
     AND C.COLUMN_DEFAULT IS NULL