Tento článek představuje jedenáct různých přístupů k načítání informací o cizím klíči v SQL Server. Některé z nich budou v závislosti na situaci užitečnější než jiné.
Některé z těchto metod lze upravit a vrátit tak další informace. Můžete například provádět spojení v různých systémových pohledech a vrátit tak více dat.
Příklad 1 – Uložená procedura systému sp_fkeys
sp_fkeys
systémová uložená procedura vrací logické informace o cizím klíči pro aktuální prostředí. Zobrazuje vztahy cizích klíčů včetně zakázaných cizích klíčů.
Tato uložená procedura je ideální, když potřebujete informace o cizím klíči pro konkrétní tabulku. Jednoduše předáte název tabulky primárního nebo cizího klíče proceduře a ta vrátí příslušné informace.
Příklad:
EXEC sp_fkeys @fktable_name = Albums;
Výsledek (při použití vertikálního výstupu):
-[ RECORD 1 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Artists PKCOLUMN_NAME | ArtistId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | ArtistId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Artists PK_NAME | PK__Artists__25706B50FCD918B1 DEFERRABILITY | 7 -[ RECORD 2 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Genres PKCOLUMN_NAME | GenreId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | GenreId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Genres PK_NAME | PK__Genres__0385057E88BB96F8 DEFERRABILITY | 7
Dalším způsobem použití tohoto zobrazení je zadat název tabulky primárního klíče:
EXEC sp_fkeys @pktable_name = Artists;
Výsledek (při použití vertikálního výstupu):
-[ RECORD 1 ]------------------------- PKTABLE_QUALIFIER | Music PKTABLE_OWNER | dbo PKTABLE_NAME | Artists PKCOLUMN_NAME | ArtistId FKTABLE_QUALIFIER | Music FKTABLE_OWNER | dbo FKTABLE_NAME | Albums FKCOLUMN_NAME | ArtistId KEY_SEQ | 1 UPDATE_RULE | 1 DELETE_RULE | 1 FK_NAME | FK_Albums_Artists PK_NAME | PK__Artists__25706B50FCD918B1 DEFERRABILITY | 7
Můžete také použít další argumenty, jako je vlastník tabulky a kvalifikátor tabulky:
EXEC sp_fkeys @pktable_name = Artists, @pktable_owner = dbo, @pktable_qualifier = Music, @fktable_name = Albums, @fktable_owner = dbo, @fktable_qualifier = Music;
Příklad 2 – Systémové zobrazení REFERENTIAL_CONSTRAINTS
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
systémové zobrazení vrátí jeden řádek pro každý FOREIGN KEY
omezení v aktuální databázi.
To je ideální pro rychlé vrácení seznamu cizích klíčů v databázi spolu s jejich přidruženým jedinečným omezením. Nejste omezeni pouze na jednu tabulku jako v předchozím příkladu.
Zde je příklad:
SELECT CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;
Výsledek:
+-------------------+-------------------------------+ | CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME | |-------------------+-------------------------------| | FK_Albums_Artists | PK__Artists__25706B50FCD918B1 | | FK_Albums_Genres | PK__Genres__0385057E88BB96F8 | +-------------------+-------------------------------+
Takže v tomto případě můžeme vidět každý cizí klíč v aktuální databázi spolu s jeho přidruženým primárním klíčem.
Jak se ukázalo, tato databáze má pouze dva cizí klíče a jsou to tytéž, které jsme viděli v předchozím příkladu.
Zde je příklad, který vrací všechna data pro FK_Albums_Artists cizí klíč:
SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_Albums_Artists';
Výsledek:
CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists UNIQUE_CONSTRAINT_CATALOG | Music UNIQUE_CONSTRAINT_SCHEMA | dbo UNIQUE_CONSTRAINT_NAME | PK__Artists__25706B50FCD918B1 MATCH_OPTION | SIMPLE UPDATE_RULE | NO ACTION DELETE_RULE | NO ACTION
Všimnete si, že tato metoda neposkytuje podrobnosti o tabulce primárního a cizího klíče, které získáte předchozí metodou, takže pokud tyto informace potřebujete, budete muset provést nějaké spojení s jinými pohledy (nebo použít jednu z metod níže).
Příklad 3 – Systémové zobrazení KEY_COLUMN_USAGE
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
systémový pohled vrátí jeden řádek pro každý sloupec, který je v aktuální databázi omezen jako klíč.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
Výsledek:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | | Genres | GenreId | PK__Genres__0385057E88BB96F8 | +--------------+---------------+-------------------------------+
Vidíme, že to vrací všechna omezení, včetně primárních klíčů.
Můžeme také přidat WHERE
klauzule k zúžení výsledků na konkrétní tabulku.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
Výsledek:
+--------------+---------------+------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | +--------------+---------------+------------------------------+
V těchto příkladech jsem zúžil výsledky pouze na ty sloupce zobrazení, které mě zajímají, ale můžete také použít hvězdičku (*
) zástupný znak pro návrat všech sloupců.
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
Výsledek (při použití vertikálního výstupu):
-[ RECORD 1 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | ArtistId ORDINAL_POSITION | 1 -[ RECORD 2 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | GenreId ORDINAL_POSITION | 1 -[ RECORD 3 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | AlbumId ORDINAL_POSITION | 1
Příklad 4 – Systémové zobrazení CONSTRAINT_COLUMN_USAGE
Je to podobné jako v předchozím příkladu. INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
systémový pohled vrátí jeden řádek pro každý sloupec v aktuální databázi, který má pro daný sloupec definováno omezení.
Stejně jako u INFORMATION_SCHEMA.KEY_COLUMN_USAGE
s tímto zobrazením se vám také vrátí primární klíče. Nicméně INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
není omezena pouze na klíčová omezení.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;
Výsledek:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Albums | GenreId | FK_Albums_Genres | | Albums | AlbumId | PK__Albums__97B4BE379FC780BD | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | | Genres | GenreId | PK__Genres__0385057E88BB96F8 | +--------------+---------------+-------------------------------+
Můžete použít WHERE
klauzule pro vrácení pouze určité tabulky nebo sloupce:
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE COLUMN_NAME = 'ArtistId';
Výsledek:
+--------------+---------------+-------------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | |--------------+---------------+-------------------------------| | Albums | ArtistId | FK_Albums_Artists | | Artists | ArtistId | PK__Artists__25706B50FCD918B1 | +--------------+---------------+-------------------------------+
V tomto případě jsem zadal název sloupce, takže vrátil všechna omezení pro sloupce s tímto názvem. Jak se ukázalo, databáze používá stejný název sloupce ve dvou různých tabulkách. Jeden má omezení cizího klíče, druhý primární klíč. Proto jsou vráceny oba řádky.
Opět můžete použít hvězdičku (*
) zástupný znak pro návrat všech sloupců.
Zde je příklad, kdy vrátím všechna data pro konkrétní tabulku:
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'Albums';
Výsledek (při použití vertikálního výstupu):
-[ RECORD 1 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | ArtistId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists -[ RECORD 2 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | GenreId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres -[ RECORD 3 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums COLUMN_NAME | AlbumId CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD
Příklad 5 – Systémové zobrazení CONSTRAINT_TABLE_USAGE
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
systémový pohled vrátí jeden řádek pro každou tabulku v aktuální databázi, která má pro tabulku definováno omezení.
SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;
Výsledek:
+--------------+-------------------------------+ | TABLE_NAME | CONSTRAINT_NAME | |--------------+-------------------------------| | Artists | PK__Artists__25706B50FCD918B1 | | Genres | PK__Genres__0385057E88BB96F8 | | Albums | PK__Albums__97B4BE379FC780BD | | Albums | FK_Albums_Artists | | Albums | FK_Albums_Genres | +--------------+-------------------------------+
Toto zobrazení nevrací názvy sloupců, pro které jsou omezení použita, takže pro vás nemusí být tak užitečné, v závislosti na vašich požadavcích.
Zde je příklad, který ukazuje všechna data vrácená tímto zobrazením pro Alba tabulka:
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE WHERE TABLE_NAME = 'Albums';
Výsledek:
-[ RECORD 1 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | PK__Albums__97B4BE379FC780BD -[ RECORD 2 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists -[ RECORD 3 ]------------------------- TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres
Příklad 6 – Systémové zobrazení TABLE_CONSTRAINTS
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
systémový pohled vrátí jeden řádek pro každé omezení tabulky v aktuální databázi.
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
Výsledek:
+--------------+-------------------------------+-------------------+ | TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | |--------------+-------------------------------+-------------------| | Artists | PK__Artists__25706B50FCD918B1 | PRIMARY KEY | | Genres | PK__Genres__0385057E88BB96F8 | PRIMARY KEY | | Albums | PK__Albums__97B4BE379FC780BD | PRIMARY KEY | | Albums | FK_Albums_Artists | FOREIGN KEY | | Albums | FK_Albums_Genres | FOREIGN KEY | +--------------+-------------------------------+-------------------+
Toto zobrazení neposkytuje název sloupce, ale poskytuje typ omezení. Proto můžete zúžit výsledky pouze na cizí klíče:
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'FOREIGN KEY';
Výsledek:
+--------------+-------------------+-------------------+ | TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE | |--------------+-------------------+-------------------| | Albums | FK_Albums_Artists | FOREIGN KEY | | Albums | FK_Albums_Genres | FOREIGN KEY | +--------------+-------------------+-------------------+
Zde je příklad, který používá zástupný znak (*
) znak pro vrácení všech dat pro omezení cizího klíče aplikovaná na
Alba
tabulka:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'Albums' AND CONSTRAINT_TYPE = 'FOREIGN KEY';
Výsledek:
-[ RECORD 1 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Artists TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_TYPE | FOREIGN KEY IS_DEFERRABLE | NO INITIALLY_DEFERRED | NO -[ RECORD 2 ]------------------------- CONSTRAINT_CATALOG | Music CONSTRAINT_SCHEMA | dbo CONSTRAINT_NAME | FK_Albums_Genres TABLE_CATALOG | Music TABLE_SCHEMA | dbo TABLE_NAME | Albums CONSTRAINT_TYPE | FOREIGN KEY IS_DEFERRABLE | NO INITIALLY_DEFERRED | NO
Příklad 7 – Systémové zobrazení sys.foreign_keys
sys.foreign_keys
systémový pohled obsahuje řádek na objekt, který je FOREIGN KEY
omezení s sys.object.type = F
(„F“ znamená „Zahraniční klíč“).
Příklad:
SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Column' FROM sys.foreign_keys;
Výsledek:
+-------------------+---------+---------------------+ | Constraint | Table | Referenced Column | |-------------------+---------+---------------------| | FK_Albums_Artists | Albums | Artists | | FK_Albums_Genres | Albums | Genres | +-------------------+---------+---------------------+
Zde je při vrácení všech dat pro FK_Albums_Artists
cizí klíč:
SELECT * FROM sys.foreign_keys WHERE name = 'FK_Albums_Artists';
Výsledek:
name | FK_Albums_Artists object_id | 981578535 principal_id | NULL schema_id | 1 parent_object_id | 949578421 type | F type_desc | FOREIGN_KEY_CONSTRAINT create_date | 2019-05-02 12:56:06.380 modify_date | 2019-05-02 12:56:06.380 is_ms_shipped | 0 is_published | 0 is_schema_published | 0 referenced_object_id | 885578193 key_index_id | 1 is_disabled | 0 is_not_for_replication | 0 is_not_trusted | 0 delete_referential_action | 0 delete_referential_action_desc | NO_ACTION update_referential_action | 0 update_referential_action_desc | NO_ACTION is_system_named | 0
Příklad 8 – Systémové zobrazení sys.foreign_key_columns
sys.foreign_key_columns
systémové zobrazení obsahuje řádek pro každý sloupec nebo sadu sloupců, které obsahují cizí klíč.
Příklad:
SELECT OBJECT_NAME(constraint_object_id) AS 'Foreign Key', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table' FROM sys.foreign_key_columns;
Výsledek:
+--------------------+---------+--------------------+ | Foreign Key | Table | Referenced Table | |--------------------+---------+--------------------| | FK_Albums_Artists | Albums | Artists | | FK_Albums_Genres | Albums | Genres | | FK_Artists_Country | Artists | Country | +--------------------+---------+--------------------+
A tady je to při vrácení všech dat pro FK_Albums_Artists
cizí klíč:
SELECT * FROM sys.foreign_key_columns WHERE OBJECT_NAME(constraint_object_id) = 'FK_Albums_Artists';
Výsledek:
constraint_object_id | 981578535 constraint_column_id | 1 parent_object_id | 949578421 parent_column_id | 4 referenced_object_id | 885578193 referenced_column_id | 1
Příklad 9 – Systémové zobrazení sys.objects
Soubor sys.objects
systémový pohled obsahuje řádek pro každý uživatelsky definovaný objekt v rozsahu schématu, který je vytvořen v databázi. Obsahuje tedy informace o našich cizích klíčích.
Příklad:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name FROM sys.objects WHERE type = 'F';
Výsledek:
+---------+-------------------+ | Table | name | |---------+-------------------| | Albums | FK_Albums_Artists | | Albums | FK_Albums_Genres | +---------+-------------------+
V tomto příkladu jsem zúžil výsledky pouze na cizí klíče (zadejte F
).
Zde je příklad, který vrací všechna data pro FK_Albums_Artists cizí klíč:
SELECT * FROM sys.objects WHERE name = 'FK_Albums_Artists';
Výsledek (při použití vertikálního výstupu):
-[ RECORD 1 ]------------------------- name | FK_Albums_Artists object_id | 981578535 principal_id | NULL schema_id | 1 parent_object_id | 949578421 type | F type_desc | FOREIGN_KEY_CONSTRAINT create_date | 2019-05-02 12:56:06.380 modify_date | 2019-05-02 12:56:06.380 is_ms_shipped | 0 is_published | 0 is_schema_published | 0
Příklad 10 – Uložená procedura systému sp_helpconstraint
sp_helpconstraint
systémová uložená procedura vrací seznam všech typů omezení, jejich uživatelem definovaný nebo systémem dodaný název, sloupce, ve kterých byly definovány, a výraz, který definuje omezení (pro DEFAULT
a CHECK
pouze omezení).
Proto jej můžete použít k vrácení informací o cizích klíčích ve vaší databázi.
Příklad:
EXEC sp_helpconstraint Albums;
Výsledek:
+---------------+ | Object Name | |---------------| | Albums | +---------------+ -[ RECORD 1 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Artists delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | ArtistId -[ RECORD 2 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Artists (ArtistId) -[ RECORD 3 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Genres delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | GenreId -[ RECORD 4 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Genres (GenreId) -[ RECORD 5 ]------------------------- constraint_type | PRIMARY KEY (clustered) constraint_name | PK__Albums__97B4BE379FC780BD delete_action | (n/a) update_action | (n/a) status_enabled | (n/a) status_for_replication | (n/a) constraint_keys | AlbumId
Příklad 11 – Uložená procedura systému sp_help
sp_help
uložená procedura systému hlásí informace o databázovém objektu (jakýkoli objekt uvedený v sys.sysobjects
pohled kompatibility), uživatelsky definovaný datový typ nebo datový typ. To zahrnuje informace o cizích klíčích.
Když to spustíte bez jakýchkoli argumentů, zobrazí se informace o souhrnných informacích o objektech všech typů, které existují v aktuální databázi (tj. hodně informací).
Můžete však zadat název tabulky a ta vrátí informace o této tabulce. Opět se vám vrátí mnoho informací, ale mezi nimi budou cizí klíčové informace.
Příklad:
EXEC sp_help Albums;
Výsledek:
+--------+---------+------------+-------------------------+ | Name | Owner | Type | Created_datetime | |--------+---------+------------+-------------------------| | Albums | dbo | user table | 2019-05-02 12:56:06.370 | +--------+---------+------------+-------------------------+ -[ RECORD 1 ]------------------------- Column_name | AlbumId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 2 ]------------------------- Column_name | AlbumName Type | nvarchar Computed | no Length | 510 Prec | Scale | Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | SQL_Latin1_General_CP1_CI_AS -[ RECORD 3 ]------------------------- Column_name | ReleaseDate Type | date Computed | no Length | 3 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 4 ]------------------------- Column_name | ArtistId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL -[ RECORD 5 ]------------------------- Column_name | GenreId Type | int Computed | no Length | 4 Prec | 10 Scale | 0 Nullable | no TrimTrailingBlanks | (n/a) FixedLenNullInSource | (n/a) Collation | NULL +------------+--------+-------------+-----------------------+ | Identity | Seed | Increment | Not For Replication | |------------+--------+-------------+-----------------------| | AlbumId | 1 | 1 | 0 | +------------+--------+-------------+-----------------------+ +-------------------------------+ | RowGuidCol | |-------------------------------| | No rowguidcol column defined. | +-------------------------------+ +-----------------------------+ | Data_located_on_filegroup | |-----------------------------| | PRIMARY | +-----------------------------+ +------------------------------+---------------------------------------------------+--------------+ | index_name | index_description | index_keys | |------------------------------+---------------------------------------------------+--------------| | PK__Albums__97B4BE379FC780BD | clustered, unique, primary key located on PRIMARY | AlbumId | +------------------------------+---------------------------------------------------+--------------+ -[ RECORD 1 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Artists delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | ArtistId -[ RECORD 2 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Artists (ArtistId) -[ RECORD 3 ]------------------------- constraint_type | FOREIGN KEY constraint_name | FK_Albums_Genres delete_action | No Action update_action | No Action status_enabled | Enabled status_for_replication | Is_For_Replication constraint_keys | GenreId -[ RECORD 4 ]------------------------- constraint_type | constraint_name | delete_action | update_action | status_enabled | status_for_replication | constraint_keys | REFERENCES Music.dbo.Genres (GenreId) -[ RECORD 5 ]------------------------- constraint_type | PRIMARY KEY (clustered) constraint_name | PK__Albums__97B4BE379FC780BD delete_action | (n/a) update_action | (n/a) status_enabled | (n/a) status_for_replication | (n/a) constraint_keys | AlbumId