sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan opretter du tabel med begrænsning af fremmednøgle i SQL Server - SQL Server / TSQL vejledning del 66

Hvad er fremmednøgle i SQL Server-tabel:

Fremmednøgle i en tabel er en kolonne eller gruppe af kolonner, der giver et link mellem data i to tabeller. Foreign Key i en tabel peger på den primære nøgle i en anden tabel.
Lad os oprette dbo.Customer Table med Primary Key ved at bruge nedenstående DDL-sætning
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 Som du kan se, at Customerid er den primære nøgle i dbo. Kundetabel.
Da vi er klar med vores første tabel og har den primære nøgle, er vi klar til at lave en anden tabel med fremmed nøglebegræ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, at vi har tilføjet Customer_id-kolonnen i dbo.Ordre-tabel, der refererer til Customerid i dbo.Customer-tabel.
Den primære nøgle i første tabel er Customerid og Foreign Key Column i anden tabel er Customer_id, det vil sige kolonnerne behøver ikke at have samme navne. Det er en god ide at beholde det samme navn, så når du skriver forespørgsler og slutter dig til tabellerne, behøver du ikke at kigge på, hvad der er primær nøgle, og hvilken som er fremmednøgle, i stedet vil du vide, at de samme kolonnenavne er i relation .
Lad os indsætte et par poster og se, hvordan Foreign Key Constraint virker.
    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)
 
 Begge poster vil blive indsat fint, da vi indsætter samme kunde-id i dbo. Ordrer, der findes i dbo.Customer.
Hvis vi vil forsøge at indsætte en værdi i dbo.Ordre, der ikke er til stede i dbo.Customer (CustomerId), Det vil gennem en fejl på grund af fremmednøglebegrænsning.
 insert into dbo.Orders
    (OrderItemName,OrderItemAmt,Customer_Id)
    values ('TV',1,2)

Når vi kører ovenstående forespørgsel, sker der en fejl, da vi ikke har 2 som kunde-id i dbo. Kundetabel.
Besked 547, niveau 16, tilstand 0, linje 28. INSERT-sætningen var i konflikt med FOREIGN KEY begrænsning "FK__Orders__Kunde__286302EC". Konflikten opstod i databasen "YourDatabaseName", tabel "dbo.Customer", kolonne 'Customerid'. Erklæringen er blevet afsluttet.

Videodemo :Hvad er Foreign Key Constraint og hvordan oprettes Foreign Key Constraint i SQL


  1. postgresql single instace installationer

  2. Sådan rettes Security Advisor MySQL Alert

  3. Trimningstid fra datetime – en opfølgning

  4. hvordan får man vist fuld lagret procedurekode?