2013-10-18 59 views
0

我想列出數據庫中的所有主鍵約束。我需要的信息是按名稱列出所有主鍵約束,而不是系統名稱

  • 約束名
  • 在關鍵

列的關鍵

  • 順序位置的TABLE.COLUMN(個),我需要的名字約束名而不是系統生成的名稱。

    有沒有人有一個查詢那裏呢?

    由於提前,

  • +3

    我不確定你在「名稱」和「系統生成的名稱」之間繪製了什麼區別 - 我知道的唯一系統生成的名稱是在約束被添加時生成的唯一系統* *名稱 - 所以不存在約束同時具有「名稱」和「系統生成名稱」的情況。你能舉一個你的意思嗎? –

    +0

    我需要比較兩個數據庫之間的主鍵約束。使用系統生成的約束名稱是不可能的,因爲約束名稱在每個數據庫上都不相同。有沒有另外一種方法可以引用一個限制,以便我可以跨數據庫比較它們? – user2135970

    +1

    那麼當然你應該只是基於* table *名稱而不是* constraint *名稱來進行比較 - 因爲每個表只能有一個PK。 –

    回答

    0

    是,Damien_The_Unbeliever是正確的約束名字我不應該比較的基礎上,而不是我應該是比較基於TABLE.COLUMN名。

    0

    如何:

    SELECT kcu.CONSTRAINT_NAME, 
        kcu.TABLE_NAME, 
        kcu.COLUMN_NAME, 
        kcu.ORDINAL_POSITION 
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk 
        JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu 
         ON kcu.CONSTRAINT_NAME = pk.CONSTRAINT_NAME 
        WHERE pk.CONSTRAINT_TYPE = 'PRIMARY KEY' 
    
    相關問題