sql >> Database >  >> RDS >> Sqlserver

Een beperking voor een externe sleutel toevoegen aan een bestaande tabel in SQL Server (T-SQL)

In databasetermen, een vreemde sleutel is een kolom die is gekoppeld aan het primaire sleutelveld van een andere tabel in een relatie tussen twee tabellen.

Een externe sleutel is een type beperking, en als u dus een externe sleutel in SQL Server wilt maken, moet u een externe sleutelbeperking maken.

Dit artikel laat zien hoe u een externe-sleutelbeperking in SQL Server maakt met Transact-SQL.

Voorbeeld

De eenvoudigste manier om dit aan te tonen is met een voorbeeld. In dit voorbeeld gebruiken we T-SQL om een ​​externe sleutelbeperking te maken met behulp van de ALTER TABLE verklaring:

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

Dit creëert een relatie tussen twee tabellen (de Albums tabel en de Artists) tafel). We doen dit door een externe sleutelbeperking te maken voor de Albums tafel. We specificeren dat de Albums.ArtistId kolom is een externe sleutel naar de Artists.ArtistId kolom.

Dit veronderstelt uiteraard dat de twee tabellen bestaan. Als ze dat niet deden, zouden we een foutmelding krijgen.

We gebruiken ook GO die eigenlijk geen deel uitmaakt van T-SQL. Het wordt door verschillende hulpprogramma's herkend om het einde van een reeks T-SQL-instructies aan te geven.

Controleer het resultaat

U kunt het resultaat controleren door het volgende script uit te voeren:

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

Dit geeft een overzicht van de externe sleutels in de Music databank. Pas de naam van de database aan.

Als uw database te veel externe sleutels heeft, kunt u deze altijd verfijnen met een WHERE clausule toe aan de specifieke externe sleutel waarin u geïnteresseerd bent. U kunt ook het jokerteken gebruiken (* ) als u alle kolommen wilt retourneren.


  1. Early bird inschrijvingen geopend voor PGDay.IT 2011

  2. Maanden toevoegen aan een datum in PostgreSQL

  3. De verbindingspool voor database '/data/data/msv_database.db' heeft geen verbinding kunnen maken. Verbindingen:0 actief, 1 inactief, 0 beschikbaar

  4. Hoe kan ik een SQL Server 2008 DateTimeOffset converteren naar een DateTime?