sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man skapar en tabell med utländsk nyckelbegränsning i SQL Server - SQL Server / TSQL självstudie del 66

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


  1. T-SQL:Avrunda till närmaste 15 minuters intervall

  2. Välj kolumner med särskilda kolumnnamn i PostgreSQL

  3. Hur man avgör om talet är flytande eller heltal

  4. Hur man använder GROUP_CONCAT i en CONCAT i MySQL