sql >> Databáze >  >> RDS >> Sqlserver

Jak přidat omezení cizího klíče do existující tabulky v SQL Server (T-SQL)

Z hlediska databáze cizí klíč je sloupec, který je propojen s polem primárního klíče jiné tabulky ve vztahu mezi dvěma tabulkami.

Cizí klíč je typ omezení, a pokud tedy chcete vytvořit cizí klíč na serveru SQL Server, budete muset vytvořit omezení cizího klíče.

Tento článek ukazuje, jak vytvořit omezení cizího klíče v SQL Server pomocí Transact-SQL.

Příklad

Nejjednodušší způsob, jak to demonstrovat, je na příkladu. V tomto příkladu používáme T-SQL k vytvoření omezení cizího klíče pomocí ALTER TABLE prohlášení:

USE Music;
ALTER TABLE Albums
  ADD CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId)     
      REFERENCES dbo.Artists (ArtistId)
      ON DELETE CASCADE    
      ON UPDATE CASCADE
  ;
GO

Tím se vytvoří vztah mezi dvěma tabulkami (Albums tabulka a Artists) stůl). Toho dosáhneme vytvořením omezení cizího klíče pro Albums stůl. Uvádíme, že Albums.ArtistId sloupec je cizí klíč k Artists.ArtistId sloupec.

To samozřejmě předpokládá, že tyto dvě tabulky existují. Pokud by to neudělali, dostali bychom chybu.

Používáme také GO který ve skutečnosti není součástí T-SQL. Je rozpoznán různými nástroji, aby signalizoval konec dávky příkazů T-SQL.

Zkontrolujte výsledek

Výsledek můžete zkontrolovat spuštěním následujícího skriptu:

USE Music;
SELECT 
    name,
    type_desc,
    delete_referential_action_desc,
    update_referential_action_desc
FROM sys.foreign_keys;
GO

Zde jsou uvedeny cizí klíče v Music databáze. Změňte název databáze, aby vyhovoval.

Pokud má vaše databáze příliš mnoho cizích klíčů, můžete ji vždy zúžit pomocí WHERE klauzuli na konkrétní cizí klíč, který vás zajímá. Můžete také použít zástupný znak (* ), pokud potřebujete vrátit všechny sloupce.


  1. Migrace z MySQL Enterprise na MariaDB 10.3

  2. Jak opravit chybu MySQL 1064

  3. jak na Flashback, když máme dataguard

  4. Jak vytvořit slabý referenční kurzor PL/SQL v databázi Oracle