Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

11 начина за връщане на чужди ключове в база данни на SQL Server с помощта на T-SQL

Тази статия представя единадесет различни подхода за извличане на информация за външен ключ в SQL Server. Някои от тях ще бъдат по-полезни от други, в зависимост от ситуацията.

Някои от тези методи могат да бъдат променени, за да се върне допълнителна информация. Например, можете да извършвате обединения на различни системни изгледи, за да върнете повече данни.

Пример 1 – Системната запаметена процедура sp_fkeys

sp_fkeys системната съхранена процедура връща информация за логически външен ключ за текущата среда. Показва връзки с външни ключове, включително забранени външни ключове.

Тази съхранена процедура е идеална, когато имате нужда от информация за външен ключ за конкретна таблица. Просто предавате името на таблицата с първичен или външен ключ на процедурата и тя ще върне съответната информация.

Пример:

EXEC sp_fkeys @fktable_name =Албуми;

Резултат (с помощта на вертикален изход):

-[ ЗАПИС 1 ]------------------------------PKTABLE_QUALIFIER | MusicPKTABLE_OWNER | dboPKTABLE_NAME | ИзпълнителиPKCOLUMN_NAME | ArtistIdFKTABLE_QUALIFIER | MusicFKTABLE_OWNER | dboFKTABLE_NAME | АлбумиFKCOLUMN_NAME | ArtistIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtsPK_NAME | PK__Артисти__25706B50FCD918B1 ОТЛОЖЕНИЕ | 7-[ ЗАПИС 2 ]------------------------------PKTABLE_QUALIFIER | MusicPKTABLE_OWNER | dboPKTABLE_NAME | ЖанровеPKCOLUMN_NAME | GenreIdFKTABLE_QUALIFIER | MusicFKTABLE_OWNER | dboFKTABLE_NAME | АлбумиFKCOLUMN_NAME | GenreIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_GenresPK_NAME | PK__Жанрове__0385057E88BB96F8ОТЛОЖЕНИЕ | 7

Друг начин за използване на този изглед е да предоставите името на таблицата с първичен ключ:

EXEC sp_fkeys @pktable_name =Изпълнители;

Резултат (с помощта на вертикален изход):

-[ ЗАПИС 1 ]------------------------------PKTABLE_QUALIFIER | MusicPKTABLE_OWNER | dboPKTABLE_NAME | ИзпълнителиPKCOLUMN_NAME | ArtistIdFKTABLE_QUALIFIER | MusicFKTABLE_OWNER | dboFKTABLE_NAME | АлбумиFKCOLUMN_NAME | ArtistIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtsPK_NAME | PK__Артисти__25706B50FCD918B1 ОТЛОЖЕНИЕ | 7

Можете също да използвате други аргументи, като собственик на таблицата и квалификатор на таблица:

EXEC sp_fkeys @pktable_name =Изпълнители, @pktable_owner =dbo, @pktable_qualifier =Музика, @fktable_name =Албуми, @fktable_owner =dbo, @fktable_qualifier =Музика;

Пример 2 – Системният изглед REFERENTIAL_CONSTRAINTS

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS системният изглед връща един ред за всеки FOREIGN KEY ограничение в текущата база данни.

Това е идеално за бързо връщане на списък с външни ключове в базата данни, заедно със свързаните с тях уникални ограничения. Не сте ограничени само до една таблица, както в предишния пример.

Ето един пример:

ИЗБЕРЕТЕ CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

Резултат:

+------------------+----------------------------------- -----+| CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME ||-------------------+--------------------------- ----|| FK_Албуми_Изпълнители | PK__Художници__25706B50FCD918B1 || FK_Албуми_Жанрове | PK__Genres__0385057E88BB96F8 |+-------------------+-------------------------- ----+

Така че в този случай можем да видим всеки външен ключ в текущата база данни, заедно със свързания с него първичен ключ.

Както се оказва, тази база данни има само два външни ключа и те са същите, които видяхме в предишния пример.

Ето пример, който връща всички данни за FK_Albums_Artist външен ключ:

ИЗБЕРЕТЕ *FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSWHERE CONSTRAINT_NAME ='FK_Albums_Arts';

Резултат:

CONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_ArtistsUNIQUE_CONSTRAINT_CATALOG | МузикаUNIQUE_CONSTRAINT_SCHEMA | dboUNIQUE_CONSTRAINT_NAME | PK__Изпълнители__25706B50FCD918B1MATCH_OPTION | SIMPLEUPDATE_RULE | НЯМА ACTIONDELETE_RULE | БЕЗ ДЕЙСТВИЕ

Ще забележите, че този метод не предоставя подробности за таблицата с първични и външни ключове, които получавате с предишния метод, така че ще трябва да направите някои обединявания с други изгледи, ако имате нужда от тази информация (или използвате един от методите по-долу).

Пример 3 – Системният изглед KEY_COLUMN_USAGE

INFORMATION_SCHEMA.KEY_COLUMN_USAGE системният изглед връща един ред за всяка колона, която е ограничена като ключ в текущата база данни.

ИЗБЕРЕТЕ TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Резултат:

+--------------+--------------+-------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+--------------+---------------- ---------------|| Албуми | ArtistId | FK_Албуми_Изпълнители || Албуми | GenreId | FK_Албуми_Жанрове || Албуми | ID на албума | PK__Албуми__97B4BE379FC780BD || Художници | ArtistId | PK__Художници__25706B50FCD918B1 || Жанрове | GenreId | PK__Genres__0385057E88BB96F8 |+--------------+--------------+---------------- ---------------+

Можем да видим, че това връща всички ограничения, включително първичните ключове.

Можем също да добавим WHERE клауза, за да стесните резултатите до конкретна таблица.

ИЗБЕРЕТЕ TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Албуми';

Резултат:

+--------------+--------------+-------------- ---------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+--------------+---------------- --------------|| Албуми | ArtistId | FK_Албуми_Изпълнители || Албуми | GenreId | FK_Албуми_Жанрове || Албуми | ID на албума | PK__Албуми__97B4BE379FC780BD |+--------------+--------------+---------------- --------------+

В тези примери стесних резултатите само до онези колони на изгледа, които ме интересуват, но можете да използвате и звездичката (* ) заместващ знак за връщане на всички колони.

SELECT *FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Албуми';

Резултат (с помощта на вертикален изход):

-[ ЗАПИС 1 ]------------------------------CONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_ArtistsTABLE_CATALOG | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | ArtistIdORDINAL_POSITION | 1-[ ЗАПИС 2 ]------------------------КОНТРОЛНИ_КАТАЛОГ | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_GanresTABLE_CATALOG | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | GenreIdORDINAL_POSITION | 1-[ ЗАПИС 3 ]------------------------------ CONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Албуми__97B4BE379FC780BDTABLE_CATALOG | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | AlbumIdORDINAL_POSITION | 1

Пример 4 – Системният изглед CONSTRAINT_COLUMN_USAGE

Това е подобно на предишния пример. INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE системният изглед връща един ред за всяка колона в текущата база данни, която има дефинирано ограничение за колоната.

Както при INFORMATION_SCHEMA.KEY_COLUMN_USAGE вие също така ще получите първични ключове, върнати с този изглед. Въпреки това, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE не се ограничава само до ключови ограничения.

ИЗБЕРЕТЕ TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

Резултат:

+--------------+--------------+-------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+--------------+---------------- ---------------|| Албуми | ArtistId | FK_Албуми_Изпълнители || Албуми | GenreId | FK_Албуми_Жанрове || Албуми | ID на албума | PK__Албуми__97B4BE379FC780BD || Художници | ArtistId | PK__Художници__25706B50FCD918B1 || Жанрове | GenreId | PK__Genres__0385057E88BB96F8 |+--------------+--------------+---------------- ---------------+

Можете да използвате WHERE клауза за връщане само на конкретна таблица или колона:

ИЗБЕРЕТЕ TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE COLUMN_NAME ='ArtistId';

Резултат:

+--------------+--------------+-------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+--------------+---------------- ---------------|| Албуми | ArtistId | FK_Албуми_Изпълнители || Художници | ArtistId | PK__Изпълнители__25706B50FCD918B1 |+--------------+--------------+---------------- ---------------+

В този случай посочих име на колона, така че той върна всички ограничения за колони с това име. Както се оказва, базата данни използва едно и също име на колона в две различни таблици. Единият има ограничение за външен ключ, а другият първичен ключ. Следователно и двата реда се връщат.

Отново можете да използвате звездичката (* ) заместващ знак за връщане на всички колони.

Ето пример, в който връщам всички данни за конкретна таблица:

ИЗБЕРЕТЕ *FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE TABLE_NAME ='Албуми';

Резултат (с помощта на вертикален изход):

-[ ЗАПИС 1 ]------------------------------ ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | ArtistIdCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Албуми_Изпълнители-[ ЗАПИС 2 ]-------------------------ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | GenreIdCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_Ganres-[ ЗАПИС 3 ]-------------------------ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCOLUMN_NAME | AlbumIdCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Албуми__97B4BE379FC780BD

Пример 5 – Системният изглед CONSTRAINT_TABLE_USAGE

INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE системният изглед връща един ред за всяка таблица в текущата база данни, която има дефинирано ограничение за таблицата.

ИЗБЕРЕТЕ TABLE_NAME, CONSTRAINT_NAME ОТ INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;

Резултат:

+--------------+------------------------------ +| TABLE_NAME | ИМЕ НА ОГРАНИЧЕНИЕ ||--------------+------------------------------| | Художници | PK__Художници__25706B50FCD918B1 || Жанрове | PK__Жанрове__0385057E88BB96F8 || Албуми | PK__Албуми__97B4BE379FC780BD || Албуми | FK_Албуми_Изпълнители || Албуми | FK_Албуми_Жанрове |+--------------+------------------------------+ 

Този изглед не връща имената на колоните, за които се използват ограниченията, така че може да не е толкова полезен за вас, в зависимост от вашите изисквания.

Ето пример, който показва всички данни, върнати от този изглед за Албуми таблица:

SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGEWHERE TABLE_NAME ='Албуми';

Резултат:

-[ ЗАПИС 1 ]------------------------------ ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Албуми__97B4BE379FC780BD-[ ЗАПИС 2 ]-------------------------ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Албуми_Изпълнители-[ ЗАПИС 3 ]-------------------------ТАБЛИЦА_КАТАЛОГ | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_Ganres

Пример 6 – Системният изглед TABLE_CONSTRAINTS

INFORMATION_SCHEMA.TABLE_CONSTRAINTS системният изглед връща един ред за всяко ограничение на таблицата в текущата база данни.

ИЗБЕРЕТЕ TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Резултат:

+--------------+------------------------------ +------------------+| TABLE_NAME | CONSTRAINT_NAME | ОГРАНИЧЕНИЕ_ТИП ||--------------+------------------------------+ -------------------|| Художници | PK__Художници__25706B50FCD918B1 | ПЪРВИЧЕН КЛЮЧ || Жанрове | PK__Жанрове__0385057E88BB96F8 | ПЪРВИЧЕН КЛЮЧ || Албуми | PK__Албуми__97B4BE379FC780BD | ПЪРВИЧЕН КЛЮЧ || Албуми | FK_Албуми_Изпълнители | ВЪНШЕН КЛЮЧ || Албуми | FK_Албуми_Жанрове | ВЪНШЕН КЛЮЧ |+--------------+------------------------------ +-------------------+

Този изглед не предоставя името на колоната, но предоставя типа на ограничението. Следователно можете да стесните резултатите само до външни ключове:

ИЗБЕРЕТЕ TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='ЧУЖД КЛЮЧ';

Резултат:

+--------------+-------------------+---------- --------+| TABLE_NAME | CONSTRAINT_NAME | ОГРАНИЧЕНИЕ_ТИП ||--------------+-------------------+------------ -------|| Албуми | FK_Албуми_Изпълнители | ВЪНШЕН КЛЮЧ || Албуми | FK_Албуми_Жанрове | ВЪНШЕН КЛЮЧ |+--------------+------------------+----------- --------+

Ето пример, който използва заместващ знак (* ) символ за връщане на всички данни за ограниченията на външния ключ, приложени към Албумите таблица:

SELECT *FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME ='Албуми'AND CONSTRAINT_TYPE ='ЧУЖЕН КЛЮЧ';

Резултат:

-[ ЗАПИС 1 ]------------------------------CONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_ArtistsTABLE_CATALOG | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCONSTRAINT_TYPE | ЧУЖЕН КЛЮЧ_ОТЛОЖЕН | NOINITIALLY_DEFERRED | НЕ-[ ЗАПИС 2 ]------------------------------CONSTRAINT_CATALOG | МузикаCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_GanresTABLE_CATALOG | МузикаTABLE_SCHEMA | dboTABLE_NAME | АлбумиCONSTRAINT_TYPE | ЧУЖЕН КЛЮЧ_ОТЛОЖЕН | NOINITIALLY_DEFERRED | НЕ

Пример 7 – Системният изглед sys.foreign_keys

sys.foreign_keys системният изглед съдържа ред на обект, който е FOREIGN KEY ограничение, с sys.object.type = F („F“ е за „Външен ключ“).

Пример:

ИЗБЕРЕТЕ име КАТО 'Ограничение', OBJECT_NAME(parent_object_id) КАТО 'Таблица', OBJECT_NAME(referenced_object_id) КАТО 'Реферирана колона'FROM sys.foreign_keys;

Резултат:

+------------------+--------+---------------- -----+| Ограничение | Таблица | Реферирана колона ||-------------------+--------+---------------- -----|| FK_Албуми_Изпълнители | Албуми | Художници || FK_Албуми_Жанрове | Албуми | Жанрове |+-------------------+--------+----------------- ----+

Ето го при връщане на всички данни за FK_Albums_Artists външен ключ:

SELECT * FROM sys.foreign_keysWHERE name ='FK_Albums_Arts';

Резултат:

<предварително име | FK_Albums_Artistsobject_id | 981578535principal_id | NULLschema_id | 1идентификатор_на_родител_обект | 949578421вид | F type_desc | FOREIGN_KEY_CONSTRAINT дата_създаване | 2019-05-02 12:56:06.380modify_date | 2019-05-02 12:56:06.380is_ms_shipped | 0е_публикувано | 0is_schema_published | 0referenced_object_id | 885578193key_index_id | 1 е_забранено | 0е_не_за_репликация | 0 не е_доверено | 0delete_referential_action | 0delete_referential_action_desc | NO_ACTIONupdate_referential_action | 0update_referential_action_desc | NO_ACTION е_именувана на_системата | 0

Пример 8 – Системният изглед sys.foreign_key_columns

sys.foreign_key_columns системният изглед съдържа ред за всяка колона или набор от колони, които съдържат външен ключ.

Пример:

ИЗБЕРЕТЕ OBJECT_NAME(constraint_object_id) КАТО „Външен ключ“, OBJECT_NAME(parent_object_id) КАТО „Таблица“, OBJECT_NAME(referenced_object_id) КАТО „Реферирана таблица“FROM sys.foreign_key_columns;

Резултат:

+--------------------+--------+--------------- -----+| Външен ключ | Таблица | Таблица с препратки ||--------------------+--------+--------------- -----|| FK_Албуми_Изпълнители | Албуми | Художници || FK_Албуми_Жанрове | Албуми | Жанрове || FK_Артисти_Държава | Художници | Държава |+-------------------+--------+---------------- ----+

И ето го при връщане на всички данни за FK_Albums_Artists външен ключ:

SELECT * FROM sys.foreign_key_columnsWHERE OBJECT_NAME(constraint_object_id) ='FK_Albums_Arts';

Резултат:

идентификатор_на_обект_ограничение | 981578535constraint_column_id | 1 идентификатор_на_родител_обект | 949578421parent_column_id | 4referenced_object_id | 885578193referenced_column_id | 1

Пример 9 – Системният изглед sys.objects

sys.objects системният изглед съдържа ред за всеки дефиниран от потребителя обект с обхват на схема, който е създаден в база данни. Така че включва информация за нашите външни ключове.

Пример:

ИЗБЕРЕТЕ OBJECT_NAME(parent_object_id) КАТО 'Таблица', nameFROM sys.objects WHERE type ='F';

Резултат:

+--------+-------------------+| Таблица | име ||--------+-------------------|| Албуми | FK_Албуми_Изпълнители || Албуми | FK_Albums_Жанрове |+---------+-------------------+

В този пример стесних резултатите само до външни ключове (тип F ).

Ето пример, който връща всички данни за FK_Albums_Artist външен ключ:

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

Резултат (с помощта на вертикален изход):

-[ ЗАПИС 1 ]------------------------------ име | FK_Albums_Artistsobject_id | 981578535principal_id | NULLschema_id | 1 идентификатор_на_родител_обект | 949578421вид | F type_desc | FOREIGN_KEY_CONSTRAINT дата_създаване | 2019-05-02 12:56:06.380modify_date | 2019-05-02 12:56:06.380is_ms_shipped | 0е_публикувано | 0is_schema_published | 0

Пример 10 – Съхранената процедура на системата sp_helpconstraint

sp_helpconstraint системната съхранена процедура връща списък с всички типове ограничения, тяхното дефинирано от потребителя или предоставено от системата име, колоните, в които са били дефинирани, и израза, който дефинира ограничението (за DEFAULT и CHECK само ограничения).

Следователно можете да го използвате за връщане на информация за външни ключове във вашата база данни.

Пример:

EXEC sp_helpconstraint Албуми;

Резултат:

+---------------+| Име на обект ||--------------|| Албуми |+---------------+ -[ ЗАПИС 1 ]------------------------ограничен тип | FOREIGN KEY име на_ограничение | FK_Albums_Artistsdelete_action | Без Actionupdate_action | Няма статус на действие_активиран | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]------------------------------ тип_ограничение | име_на_ограничение | изтриване_действие | действие_актуализация | status_enabled | статус_за_репликация | ограничителни_ключове | ПРЕПОРЪЧКИ Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------ограничение_тип | FOREIGN KEY име на_ограничение | FK_Albums_Genresdelete_action | Без Actionupdate_action | Няма статус на действие_активиран | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]------------------------------ тип_ограничение | име_на_ограничение | изтриване_действие | действие_актуализация | status_enabled | статус_за_репликация | ограничителни_ключове | ПРЕПОРЪЧКИ Music.dbo.Genres (GenreId)-[ RECORD 5 ]-------------------------constraint_type | ПЪРВИЧЕН КЛЮЧ (клъстериран) име_на_ограничение | PK__Албуми__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a) status_enabled | (n/a)status_for_replication | (n/a)ограничителни_ключове | ID на албума

Пример 11 – Съхранената процедура на системата sp_help

sp_help системната съхранена процедура отчита информация за обект на база данни (всеки обект, изброен в sys.sysobjects изглед за съвместимост), дефиниран от потребителя тип данни или тип данни. Това включва информация за външни ключове.

Когато изпълните това без никакви аргументи, той предоставя информация за обобщена информация за обекти от всички типове, които съществуват в текущата база данни, се връща (т.е. партия на информация).

Можете обаче да предоставите името на таблица и то ще върне информация за тази таблица. Отново ще получите много информация, върната, но сред нея ще има информация за външен ключ.

Пример:

EXEC sp_help Албуми;

Резултат:

+--------+--------+-----------+-------------- -----------+| Име | Собственик | Тип | Created_datetime ||-------+--------+-----------+-------------- ----------|| Албуми | dbo | потребителска таблица | 2019-05-02 12:56:06,370 |+--------+--------+-----------+------ -------------------+ -[ ЗАПИС 1 ]-------------------------------- Име на колона | AlbumIdType | intComputed | без дължина | 4Prec | 10 Скала | 0 с нула | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a) Съпоставяне | NULL-[ ЗАПИС 2 ]------------------------------Име_на_колона | АлбумИмеТип | nvarcharComputed | без дължина | 510Prec | Мащаб | Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a) Съпоставяне | SQL_Latin1_General_CP1_CI_AS-[ ЗАПИС 3 ]------------------------Име_на_колона | ReleaseDateType | изчислена дата | без дължина | 3Prec | 10 Скала | 0 с нула | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a) Съпоставяне | NULL-[ ЗАПИС 4 ]------------------------------Име_на_колона | ArtistIdType | intComputed | без дължина | 4Prec | 10 Скала | 0 с нула | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a) Съпоставяне | NULL-[ ЗАПИС 5 ]------------------------------Име_на_колона | GenreIdType | intComputed | без дължина | 4Prec | 10 Скала | 0 с нула | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a) Съпоставяне | NULL +-----------+-------+------------+------------ -----------+| Самоличност | Семената | Увеличение | Не е за репликация ||------------+-------+------------+--------- --------------|| ID на албума | 1 | 1 | 0 |+-----------+-------+------------+----------- ------------+ +------------------------------+| RowGuidCol ||---------------------------------------|| Няма дефинирана колона rowguidcol. |+------------------------------+ +-------------- --------------+| Data_located_on_filegroup ||----------------------------|| ОСНОВНО |+----------------------------+ +---------------- --------------+-------------------------------- ----------------+--------------+| име на индекс | индекс_описание | ключове_индекс ||---------------------------------------+---------------- ----------------------------------+-------------- || PK__Албуми__97B4BE379FC780BD | клъстериран, уникален, първичен ключ, разположен на PRIMARY | ID на албума |+------------------------------+---------------- ----------------------------------+-------------- + -[ ЗАПИС 1 ]------------------------------ тип_ограничение | FOREIGN KEY име на_ограничение | FK_Albums_Artistsdelete_action | Без Actionupdate_action | Няма статус на действие_активиран | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]------------------------------ тип_ограничение | име_на_ограничение | изтриване_действие | действие_актуализация | status_enabled | статус_за_репликация | ограничителни_ключове | ПРЕПОРЪЧКИ Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------ограничение_тип | FOREIGN KEY име на_ограничение | FK_Albums_Genresdelete_action | Без Actionupdate_action | Няма статус на действие_активиран | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]------------------------------ тип_ограничение | име_на_ограничение | изтриване_действие | действие_актуализация | status_enabled | статус_за_репликация | ограничителни_ключове | ПРЕПОРЪЧКИ Music.dbo.Genres (GenreId)-[ RECORD 5 ]-------------------------constraint_type | ПЪРВИЧЕН КЛЮЧ (клъстериран) име_на_ограничение | PK__Албуми__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a) status_enabled | (n/a)status_for_replication | (n/a)ограничителни_ключове | ID на албума

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавите колона NOT NULL към голяма таблица в SQL Server?

  2. Връщане на всички неизчислени колони от таблица в SQL Server

  3. SQL:търсене на низ във всяка колона с varchar в база данни

  4. SQL Server SHOWPLAN_TEXT

  5. Уникално ограничение за множество колони