Ms SQL Server searches for the column name of the primary key of a table

Source: Internet
Author: User

Select Syscolumns . Name
From Syscolumns , Sysobjects , Sysindexes , Sysindexkeys
Where Syscolumns . ID = Object_id ( 'Tab _ XXX' ) -- Syscolumns. ID is the table Object ID of the column.
And Sysobjects . Xtype = 'Pk' -- Sysobjects. xtype object type
And Sysobjects . Parent_obj = Syscolumns . ID
And Sysindexes . ID = Syscolumns . ID
And Sysobjects . Name = Sysindexes . Name
And Sysindexkeys . ID =Syscolumns . ID
And Sysindexkeys . Indid = Sysindexes . Indid -- The same column of the same table may have different types of Indexes
And Syscolumns . Colid = Sysindexkeys . Colid

Note: This is found in four system tables. The relationship is complex and can be roughly expressed:
SyscolumnsContains the column colid and table ID in the table. The sysobjects table contains the primary key name (similar to pk_table) and Table ID. The sysindexes contains the primary key name, table ID, and index number, sysindexkeys contains the table ID, index number, and column number. After one item is matched, the column name can be found.

Select * From syscolumns
-- Each column in each table and view occupies one row in the table, and each parameter in the stored procedure occupies one row in the table.
-- Syscolumns. ID is the table Object ID of the column.
-- Syscolumns. colid is the column Object ID

Select * From sysobjects
-- Each object created by sysobjects in the database (constraints, default values, logs, rules, stored procedures, tables, views, and so on) occupies one row in the table.
-- Sysobjects. xtype object type
-- Sysobjects. parent_obj: ID of the object of the parent object (for example, this ID is the table ID for triggers or constraints)
-- Sysobjects. Name: name of the object, which is the primary key name (similar to pk_table)

Select * From sysindexes
-- Each index and table in the database occupies one row in the table.
-- Sysindexes. ID table ID (if indid = 0 or 255 ). Otherwise, it is the ID of the table to which the index belongs.
-- Sysindexes. Name table name (if indid = 0 or 255 ). Otherwise, it is the index name. Here there is a primary key name (the primary key must be an index, see the following analysis)
-- Sysindexes. indid index ID type

Select * From sysindexkeys
-- Each index and table in the database occupies one row in the table.
-- Sysindexkeys. ID table ID
-- Sysindexkeys. indid index ID type
-- Sysindexkeys. colid column ID

The primary key must be a unique index. The unique index is not necessarily a primary key.

A primary key uniquely identifies a row in a table. A table can have only one primary key, but multiple candidate indexes. Because the primary key can uniquely identify a row of records, it can ensure that no error is reported during data update and deletion. In addition to the above functions, the primary key often forms a reference Integrity Constraint with the foreign key to prevent data inconsistency. During database design, primary keys play an important role.

The primary key can ensure that the record is unique and the primary key field is not empty,The database management system automatically generates a unique index for the primary key, so the primary key is also a special index.

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.