Get a List of all Primary Keys in a Database

前端 未结 5 1960
囚心锁ツ
囚心锁ツ 2021-02-02 00:21

Is this the best way to - Get a List of all Primary Keys in a Database - or is there something better?

SELECT
KCU.TABLE_NAME AS Table_Name,
KCU.CONSTRAINT_NAME A         


        
相关标签:
5条回答
  • 2021-02-02 00:23
    USE databasename; 
    
    GO
    
    SELECT i.name AS IndexName, OBJECT_NAME(ic.OBJECT_ID) AS TableName, 
           COL_NAME(ic.OBJECT_ID,ic.column_id) AS ColumnName
    FROM sys.indexes AS i
    INNER JOIN sys.index_columns AS ic
    ON i.OBJECT_ID = ic.OBJECT_ID
    AND i.index_id = ic.index_id
    WHERE i.is_primary_key = 1
    

    This query will extract the all primary key constraints from the database... u just need to execute this query and type the database name in first line

    0 讨论(0)
  • 2021-02-02 00:27

    If you want the data type information as well:

    SELECT 
        so.name 'Table Name',
        c.name 'Column Name',
        t.Name 'Data type',
        c.max_length 'Max Length',
        c.precision ,
        c.scale ,
        c.is_nullable,
        ISNULL(i.is_primary_key, 0) 'Primary Key'
    FROM    
        sys.columns c
    INNER JOIN 
        sys.types t ON c.user_type_id = t.user_type_id
    LEFT OUTER JOIN 
        sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
    LEFT OUTER JOIN 
        sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
    INNER JOIN 
        sysobjects so ON c.object_id = so.id
    WHERE
        i.is_primary_key = 1 and 
        so.xtype = 'U'
    Order By 'Table Name', 'Column Name'
    
    0 讨论(0)
  • 2021-02-02 00:35

    look on link

    EXEC sp_pkeys '<tablename>'
    EXEC sp_helpconstraint '<tablename>'
    

    sp_pkeys will return a row for each column that participates in the primary key for . The columns you are likely most interested in are COLUMN_NAME and PK_NAME.

    sp_helpconstraint will list all constraints for , including foreign keys that reference the table. In the first recordset, there will only be a column called Object Name (kind of useless, since that's what you passed in). In the second resultset, there will be the following columns: constraint_type, constraint_name, and constraint_keys.

    0 讨论(0)
  • 2021-02-02 00:40

    The following syntax give you all constraints in database in use.

    select * from sys.key_constraints;
    
    0 讨论(0)
  • 2021-02-02 00:50

    If you are doing this from java you can also use the getPrimaryKeys method in the databasemetadata object. Perhaps other languages have similar ways to do it.

    0 讨论(0)
提交回复
热议问题