Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

11 Möglichkeiten zum Abrufen eines Primärschlüssels in SQL Server (T-SQL-Beispiele)

Es gibt oft viele Möglichkeiten, dasselbe (oder ähnliches) in SQL Server zu tun. Das Abrufen aller Primärschlüssel aus einer Datenbank (oder sogar nur des Primärschlüssels für eine bestimmte Tabelle) ist ein typisches Beispiel.

Dieser Artikel stellt elf verschiedene Ansätze zum Abrufen von Primärschlüsselinformationen in SQL Server vor.

Einige davon sind nützlicher als andere, abhängig von Ihrer genauen Situation.

Beispiel 1 – Die gespeicherte Systemprozedur sp_pkeys

Wenn Sie nur den Primärschlüssel für eine bestimmte Tabelle benötigen, verwenden Sie sp_pkeys System Stored Procedure ist wahrscheinlich der schnellste und einfachste Weg, dies zu tun. Dazu übergeben Sie einfach den Tabellennamen an die Prozedur.

So:

EXEC sp_pkeys Künstler;

Ergebnis (bei vertikaler Ausgabe):

TABLE_QUALIFIER | MusikTABLE_OWNER | dboTABLE_NAME | KünstlerCOLUMN_NAME | ArtistIdKEY_SEQ | 1PK_NAME | PK__Künstler__25706B50FCD918B1

In diesem Fall habe ich den Primärschlüssel von den Artists angefordert Tisch. Es gibt den Primärschlüsselnamen zurück ( PK__Artists__25706B50FCD918B1 ), der Datenbankname ( Music ), der Tabellenname, der Spaltenname ( ArtistId ) und weitere Informationen.

Alternativ hätte ich alle Argumente explizit angeben können, um dasselbe Ergebnis zu erhalten:

EXEC sp_pkeys @table_name =Artists, @table_owner =dbo, @table_qualifier =Music;

Beispiel 2 – Die Systemansicht KEY_COLUMN_USAGE

Der INFORMATION_SCHEMA.KEY_COLUMN_USAGE Die Systemansicht gibt eine Zeile für jede Spalte zurück, die als Schlüssel in der aktuellen Datenbank eingeschränkt ist. Daher erhalten Sie mit dieser Ansicht auch Fremdschlüssel zurück.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Alben | GenreID | FK_Alben_Genres || Alben | Album-ID | PK__Alben__97B4BE379FC780BD || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 || Genres | GenreID | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+

Wir können sehen, dass dies Einschränkungen aus allen Tabellen zurückgibt. Wir könnten auch ein WHERE hinzufügen -Klausel, um die Ergebnisse auf eine bestimmte Tabelle einzugrenzen.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Künstler';

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 |+--------------+---------------+---------------- ---------------+

In diesen Beispielen habe ich die Ergebnisse auf die Spalten der Ansicht beschränkt, die mich interessieren, aber Sie können auch das Sternchen (* ) Platzhalter, um alle Spalten zurückzugeben.

SELECT *FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Künstler';

Ergebnis (bei vertikaler Ausgabe):

CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Artists__25706B50FCD918B1TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | KünstlerCOLUMN_NAME | ArtistIdORDINAL_POSITION | 1

Beispiel 3 – Die Systemansicht CONSTRAINT_COLUMN_USAGE

Dies ähnelt dem vorherigen Beispiel. Der INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Die Systemansicht gibt eine Zeile für jede Spalte in der aktuellen Datenbank zurück, für die eine Einschränkung für die Spalte definiert ist. Wie bei INFORMATION_SCHEMA.KEY_COLUMN_USAGE Mit dieser Ansicht erhalten Sie auch Fremdschlüssel zurückgegeben. Jedoch INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ist nicht nur auf wichtige Einschränkungen beschränkt.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Alben | GenreID | FK_Alben_Genres || Alben | Album-ID | PK__Alben__97B4BE379FC780BD || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 || Genres | GenreID | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+

Sie können ein WHERE verwenden -Klausel, um nur eine bestimmte Tabelle oder Spalte zurückzugeben:

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE COLUMN_NAME ='ArtistId';

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 |+--------------+---------------+---------------- ---------------+

In diesem Fall habe ich einen Spaltennamen angegeben, sodass alle Einschränkungen für Spalten mit diesem Namen zurückgegeben wurden. Wie sich herausstellt, verwendet die Datenbank denselben Spaltennamen in zwei verschiedenen Tabellen. Einer hat eine Fremdschlüsseleinschränkung, der andere einen Primärschlüssel. Daher werden beide Zeilen zurückgegeben.

Auch hier können Sie das Sternchen (* ) Platzhalter, um alle Spalten zurückzugeben.

SELECT *FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE TABLE_NAME ='Künstler';

Ergebnis (bei vertikaler Ausgabe):

TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | KünstlerCOLUMN_NAME | ArtistIdCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Künstler__25706B50FCD918B1

In diesem Beispiel habe ich die Ausgabe auf Einschränkungen für eine bestimmte Tabelle beschränkt.

Beispiel 4 – Die Systemansicht CONSTRAINT_TABLE_USAGE

Der INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE Die Systemansicht gibt eine Zeile für jede Tabelle in der aktuellen Datenbank zurück, für die eine Einschränkung für die Tabelle definiert ist.

SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;

Ergebnis:

+--------------+------------------------------- +| TABLE_NAME | CONSTRAINT_NAME ||--------------+-------------------------------| | Künstler | PK__Künstler__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Alben | PK__Alben__97B4BE379FC780BD || Alben | FK_Alben_Künstler || Alben | FK_Albums_Genres |+--------------+------------------------------+ 

Diese Ansicht gibt nicht die Spaltennamen zurück, für die die Einschränkungen verwendet werden, daher ist sie je nach Ihren Anforderungen möglicherweise nicht so nützlich für Sie.

Hier ist ein Beispiel, das alle Daten zeigt, die von dieser Ansicht für die Genres zurückgegeben werden Tabelle:

SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGEWHERE TABLE_NAME ='Genres';

Ergebnis:

TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | GenresCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Genres__0385057E88BB96F8

Beispiel 5 – Die Systemansicht TABLE_CONSTRAINTS

Der INFORMATION_SCHEMA.TABLE_CONSTRAINTS Die Systemansicht gibt eine Zeile für jede Tabelleneinschränkung in der aktuellen Datenbank zurück.

SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Ergebnis:

+--------------+------------------------------- +-------------------+| TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE ||--------------+------------------------------+ -------------------|| Künstler | PK__Künstler__25706B50FCD918B1 | PRIMÄRSCHLÜSSEL || Genres | PK__Genres__0385057E88BB96F8 | PRIMÄRSCHLÜSSEL || Alben | PK__Alben__97B4BE379FC780BD | PRIMÄRSCHLÜSSEL || Alben | FK_Alben_Künstler | FREMDSCHLÜSSEL || Alben | FK_Alben_Genres | FREMDSCHLÜSSEL |+--------------+------------------------------- +-------------------------------+

Diese Ansicht stellt nicht den Spaltennamen, aber den Einschränkungstyp bereit. Daher können Sie die Ergebnisse auf nur Primärschlüssel einschränken:

SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='PRIMARY KEY';

Ergebnis:

+--------------+------------------------------- +-------------------+| TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE ||--------------+------------------------------+ -------------------|| Künstler | PK__Künstler__25706B50FCD918B1 | PRIMÄRSCHLÜSSEL || Genres | PK__Genres__0385057E88BB96F8 | PRIMÄRSCHLÜSSEL || Alben | PK__Alben__97B4BE379FC780BD | PRIMÄRSCHLÜSSEL |+--------------+------------------------------- +-------------------------------+

Hier ist ein Beispiel, das einen Platzhalter verwendet (* ) Zeichen, um alle Daten für Beschränkungen der Künstler zurückzugeben Tabelle:

SELECT *FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME ='Künstler';

Ergebnis:

CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Artists__25706B50FCD918B1TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | KünstlerCONSTRAINT_TYPE | PRIMARY KEYIS_DEFERRABLE | NOINITIALLY_DEFERRED | NEIN

Beispiel 6 – Die Systemansicht key_constraints

Die sys.key_constraints Die Systemansicht enthält eine Zeile für jedes Objekt, das ein Primärschlüssel oder eine eindeutige Einschränkung ist. Daher könnten wir den folgenden Code verwenden, um alle Primärschlüsseleinschränkungen in der Datenbank zusammen mit der relevanten Tabelle für jeden Primärschlüssel zurückzugeben:

SELECT OBJECT_NAME(parent_object_id) AS 'Table', nameFROM sys.key_constraints WHERE type ='PK';

Ergebnis:

+---------+-------------------------------+| Tabelle | Name ||---------+-------------------------------|| Künstler | PK__Künstler__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Alben | PK__Alben__97B4BE379FC780BD |+---------+-------------------------------+

Natürlich können Sie das WHERE entfernen -Klausel, um die beiden Primärschlüssel und zurückzugeben eindeutige Schlüssel.

Das vorherige Beispiel verwendet OBJECT_NAME() Funktion, um den Namen der übergeordneten Tabelle statt ihrer Objekt-ID zurückzugeben. Wenn ich OBJECT_NAME() nicht verwendet habe Funktion hätte das Ergebnis so ausgesehen:

SELECT parent_object_id, nameFROM sys.key_constraintsWHERE type ='PK';

Ergebnis:

+--------------------+-------------------- ------+| parent_object_id | Name ||--------------------+--------------------- -----|| 885578193 | PK__Künstler__25706B50FCD918B1 || 917578307 | PK__Genres__0385057E88BB96F8 || 949578421 | PK__Alben__97B4BE379FC780BD |+--------------------+-------------------------- -----+

Die parent_object_id wird anstelle des Namens des übergeordneten Objekts zurückgegeben. Das OBJECT_NAME() Funktion macht es uns viel einfacher zu verstehen, auf welche Tabelle jeder Schlüssel angewendet wird.

Hier ist ein Beispiel, in dem ich den Platzhalter (* ) Zeichen, um alle Spalten für den Primärschlüssel in den Alben zurückzugeben Tabelle:

SELECT *FROM sys.key_constraintsWHERE type ='PK'AND OBJECT_NAME(parent_object_id) ='Alben';

Ergebnis:

| PK__Alben__97B4BE379FC780BDobject_id | 965578478Prinzipal_ID | NULLschema_id | 1parent_object_id | 949578421Typ | PKtype_desc | PRIMARY_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.377modify_date | 2019-05-02 12:56:06.377is_ms_shipped | 0ist_veröffentlicht | 0is_schema_published | 0unique_index_id | 1ist_Systemname | 1ist_erzwungen | 1

Beispiel 7 – Die sys.objects-Systemansicht

Die sys.objects Die Systemansicht enthält eine Zeile für jedes benutzerdefinierte Objekt im Schemabereich, das in einer Datenbank erstellt wird. Es enthält also unsere Tabellen und Primärschlüssel.

Wir können die vorherige Abfrage nehmen und key_constraints ersetzen mit objects und wir erhalten dasselbe Ergebnis:

SELECT OBJECT_NAME(parent_object_id) AS 'Table', nameFROM sys.objects WHERE type ='PK';

Ergebnis:

+---------+-------------------------------+| Tabelle | Name ||---------+-------------------------------|| Künstler | PK__Künstler__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Alben | PK__Alben__97B4BE379FC780BD |+---------+-------------------------------+

Hier ist ein Beispiel, das alle Daten für PK__Genres__0385057E88BB96F8 zurückgibt Primärschlüssel:

SELECT *FROM sys.objectsWHERE name ='PK__Genres__0385057E88BB96F8';

Ergebnis (bei vertikaler Ausgabe):

| PK__Genres__0385057E88BB96F8object_id | 933578364Prinzipal_ID | NULLschema_id | 1parent_object_id | 917578307Typ | PKtype_desc | PRIMARY_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.110modify_date | 2019-05-02 12:56:06.110is_ms_shipped | 0ist_veröffentlicht | 0is_schema_published | 0

Beispiel 8 – Die Systemansicht REFERENTIAL_CONSTRAINTS

Dies ist ein bisschen langwierig, aber es könnte je nach Ihrer Situation nützlich sein. Und technisch gesehen gibt es (einige) Primärschlüssel zurück.

Die INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS Die Systemansicht gibt eine Zeile für jeden FOREIGN KEY zurück Einschränkung in der aktuellen Datenbank. Sein Zweck besteht also eigentlich darin, Fremdschlüssel zurückzugeben – nicht Primärschlüssel. Diese Ansicht kann jedoch praktisch sein, wenn Sie nur alle Primärschlüssel sehen möchten, denen ein Fremdschlüssel zugeordnet ist. Es ist keine zuverlässige Methode, wenn Sie alle Primärschlüssel sehen möchten, unabhängig davon, ob es einen zugehörigen Fremdschlüssel gibt.

Hier ist ein Beispiel:

SELECT CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

Ergebnis:

+-------------------+--------------------- -----+| CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME ||-------------------+-------------------------- ----|| FK_Alben_Künstler | PK__Künstler__25706B50FCD918B1 || FK_Alben_Genres | PK__Genres__0385057E88BB96F8 |+-------------------+-------------------------- ----+

Wie Sie sehen können, gibt dies nur die Primärschlüssel zurück, die einen zugehörigen Fremdschlüssel haben. Genauer gesagt ist es genau umgekehrt – es gibt alle Fremdschlüssel zurück, zusammen mit ihrem zugehörigen UNIQUE Einschränkung.

Wenn wir also diese Ergebnisse mit den Ergebnissen aus vorherigen Beispielen vergleichen, sehen wir, dass nur zwei Primärschlüssel zurückgegeben werden (im Vergleich zu drei aus vorherigen Beispielen). Das liegt daran, dass einer der Primärschlüssel in dieser Datenbank ( PK__Albums__97B4BE379FC780BD ) hat keinen zugeordneten Fremdschlüssel.

Hier ist ein Beispiel, das alle Daten für Fremdschlüssel zurückgibt, darunter PK__Artists__25706B50FCD918B1 ist der UNIQUE Einschränkung:

SELECT *FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSWHERE UNIQUE_CONSTRAINT_NAME ='PK__Artists__25706B50FCD918B1';

Ergebnis:

CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_KünstlerUNIQUE_CONSTRAINT_CATALOG | MusikUNIQUE_CONSTRAINT_SCHEMA | dboUNIQUE_CONSTRAINT_NAME | PK__Künstler__25706B50FCD918B1MATCH_OPTION | SIMPLEUPDATE_RULE | KEINE AKTION DELETE_RULE | KEINE AKTION

In diesem Fall wird nur ein Fremdschlüssel zurückgegeben.

Wie bereits erwähnt, dient diese Ansicht hauptsächlich zum Zurückgeben von Fremdschlüsselinformationen. Verwenden Sie diese Methode also nur, wenn Sie Fremdschlüsselinformationen zusammen mit dem zugehörigen Primärschlüssel anzeigen möchten. Verwenden Sie diese Methode nicht, wenn Sie alle Primärschlüssel sehen möchten, unabhängig davon, ob sie einen zugehörigen Fremdschlüssel haben.

Beispiel 9 – Die gespeicherte Systemprozedur sp_fkeys

Diese Methode ähnelt der vorherigen Methode insofern, als sie Fremdschlüsselinformationen zurückgibt. Es gibt auch den Primärschlüssel zurück, der jedem Fremdschlüssel zugeordnet ist.

Beispiel:

EXEC sp_fkeys Künstler;

Ergebnis (bei vertikaler Ausgabe):

PKTABLE_QUALIFIER | MusikPKTABLE_OWNER | dboPKTABLE_NAME | KünstlerPKCOLUMN_NAME | ArtistIdFKTABLE_QUALIFIER | MusikFKTABLE_OWNER | dboFKTABLE_NAME | AlbenFKCOLUMN_NAME | ArtistIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtistsPK_NAME | PK__Artists__25706B50FCD918B1AUFSCHIEBBARKEIT | 7

Ich hätte stattdessen die folgende Syntax verwenden können (oder eine Kombination dieser Argumente):

EXEC sp_fkeys @pktable_name =Künstler, @pktable_owner =dbo, @pktable_qualifier =Musik, @fktable_name =Alben, @fktable_owner =dbo, @fktable_qualifier =Musik;

Wie beim vorherigen Beispiel sollte man sich nicht darauf verlassen, dass diese Methode alle Primärschlüssel zurückgibt. Wenn ein Primärschlüssel keinen zugeordneten Fremdschlüssel hat, wird er nicht zurückgegeben.

Beispiel 10 – Die gespeicherte Systemprozedur sp_helpconstraint

Die sp_helpconstraint Die gespeicherte Systemprozedur gibt eine Liste aller Einschränkungstypen zurück, ihre benutzerdefinierten oder vom System bereitgestellten Namen, die Spalten, für die sie definiert wurden, und den Ausdruck, der die Einschränkung definiert (für DEFAULT und CHECK Einschränkungen).

Daher können Sie damit Informationen zu Primärschlüsseln in Ihrer Datenbank zurückgeben.

Beispiel:

EXEC sp_helpconstraint Alben;

Ergebnis:

+---------------+| Objektname ||---------------|| Alben |+---------------+ -[ RECORD 1 ]--------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Artistsdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Genresdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Genres (GenreId)-[ RECORD 5 ]--------------------constraint_type | PRIMARY KEY (clustered)constraint_name | PK__Alben__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a)status_aktiviert | (n/a)status_for_replication | (n/a)constraint_keys | AlbumId

Beispiel 11 – Die gespeicherte Systemprozedur sp_help

Die sp_help gespeicherte Systemprozedur meldet Informationen über ein Datenbankobjekt (jedes Objekt, das in sys.sysobjects aufgeführt ist Kompatibilitätsansicht), einen benutzerdefinierten Datentyp oder einen Datentyp. Dazu gehören Informationen über Primärschlüssel.

Wenn Sie dies ohne Argumente ausführen, werden Informationen zu zusammenfassenden Informationen von Objekten aller Typen zurückgegeben, die in der aktuellen Datenbank vorhanden sind (d. h. ein lot von Informationen).

Sie können jedoch den Namen einer Tabelle angeben, und es werden Informationen zu dieser Tabelle zurückgegeben. Auch hier erhalten Sie eine Menge Informationen zurück, darunter jedoch Primärschlüsselinformationen.

Beispiel:

EXEC sp_help Künstler;

Ergebnis:

+---------+---------+------------+------------- -------------+| Name | Besitzer | Geben Sie | ein Created_datetime ||---------+---------+------------+-------------- -----------|| Künstler | dbo | Benutzertabelle | 2019-05-02 12:56:05.840 |+---------+---------+------------+----- --------------------+ -[ AUFNAHME 1 ]------------------------ -Spaltenname | ArtistIdType | intberechnet | keineLänge | 4Prec | 10 Maßstab | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL-[ RECORD 2 ]-------------------------Column_name | KünstlerNameTyp | nvarcharberechnet | keineLänge | 510Prec | Maßstab | Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | SQL_Latin1_General_CP1_CI_AS-[ RECORD 3 ]------------------------------Column_name | ActiveFromType | Datumberechnet | keineLänge | 3Prec | 10 Maßstab | 0 Nullable | yesTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL +-----------+--------+------------+------------ -----------+| Identität | Samen | Inkrement | Nicht zur Replikation ||------------+--------+-------------+--------- --------------|| ArtistID | 1 | 1 | 0 |+-----------+--------+------------+----------- -------------+ +-------------------------------+| RowGuidCol ||-------------------------------|| Keine rowguidcol-Spalte definiert. |+------------------------------+ +--------------- --------------+| Data_located_on_filegroup ||------------------------------------|| PRIMÄR |+-------------------------------------+ +---------------- -------------------------------------------------- -------------+--------------+| Indexname | index_beschreibung | index_keys ||-------------------------------+--------------- ------------------------------------+--------------------- -|| PK__Künstler__25706B50FCD918B1 | geclusterter, eindeutiger Primärschlüssel, der sich auf PRIMARY | befindet KünstlerID |+---------------------------------------------+--------------- ------------------------------------+--------------------- -+ -[ RECORD 1 ]--------------------constraint_type | PRIMARY KEY (clustered)constraint_name | PK__Artists__25706B50FCD918B1delete_action | (n/a)update_action | (n/a)status_aktiviert | (n/a)status_for_replication | (n/a)constraint_keys | ArtistId +---------------------------------------------------+| Tabelle wird durch Fremdschlüssel referenziert ||------------------------------------|| Musik.dbo.Alben:FK_Albums_Artists |+--------------------------------------+ 

Sie können auch den Namen eines Primärschlüssels angeben, um grundlegende Informationen darüber zu erhalten:

EXEC sp_help PK__Artists__25706B50FCD918B1;

Ergebnis:

+-------------------------------+---------+---- -------------+-------------------------+| Name | Besitzer | Geben Sie | ein Created_datetime ||-------------------------------+---------+----- -------------+-------------------------|| PK__Künstler__25706B50FCD918B1 | dbo | Primärschlüssel cns | 2019-05-02 12:56:05.853 |+-------------------------------+------ ---+------------+-------------------------+