Vad är främmande nyckel i SQL Server-tabellen:
Utländsk nyckel i en tabell är en kolumn eller grupp av kolumner som ger en länk mellan data i två tabeller. Den främmande nyckeln i en tabell pekar på primärnyckeln i en annan tabell.Låt oss skapa dbo.Customer Table med Primary Key genom att använda nedanstående DDL-sats
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) )
Som du kan se att Customerid är primärnyckeln i dbo.Customer Table.
Eftersom vi är redo med vår första tabell och har den primära nyckeln, är vi redo att skapa en andra tabell med främmande nyckelbegränsning.
CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,Customer_id INT FOREIGN KEY REFERENCES Customer(CustomerId) )
Du kan se att vi har lagt till kolumnen Customer_id i dbo. Ordertabell som refererar till Customerid i dbo.Customer Table.
Primärnyckeln i den första tabellen är Customerid och Foreign Key Column i andra tabellen är Customer_id, det betyder kolumnerna behöver inte ha samma namn. Det är bra att behålla samma namn så när du skriver frågor och går med i tabellerna behöver du inte ta en titt på vilken som är primärnyckel och vilken som är främmande nyckel, istället skulle du veta att samma kolumnnamn är i relation .
Låt oss infoga ett par poster och se hur Foreign Key Constraint fungerar.
insert into dbo.Customer (CustomerId,FName, LName,SSN) values (1,'Aamir','Shahzad','000-000-00') insert into dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) values ('TV',1,1)
Båda posterna kommer att infogas bra, eftersom vi infogar samma kund-id i dbo.Order som finns i dbo.Customer.
Om vi kommer att försöka infoga något värde i dbo.Order som inte finns i dbo.Customer (CustomerId), det kommer att genom ett fel på grund av främmande nyckel-begränsning.
insert into dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) values ('TV',1,2)
När vi kör ovanstående fråga uppstår det genom fel eftersom vi inte har 2 som kund-id i dbo.Kundtabell.
Medd. 547, nivå 16, tillstånd 0, rad 28 INSERT-satsen kom i konflikt med FOREIGN KEY begränsning "FK__Orders__Customer__286302EC". Konflikten uppstod i databasen "YourDatabaseName", tabell "dbo.Customer", kolumn "Customerid". Uttalandet har avslutats.
Videodemo :Vad är Foreign Key Constraint och hur man skapar Foreign Key Constraint i SQL