sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man lägger till främmande nyckelbegränsning till befintlig tabell i SQL Server - SQL Server / TSQL självstudie del 68

Scenario:

Du har redan skapat två tabeller dbo.Customer och dbo.Orders. Primärnyckel skapas i kolumnen CustomerId i dbo.Customer-tabellen.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 
CREATE TABLE dbo.Orders (
    OrderId INT Identity(1, 1)
    ,OrderitemName VARCHAR(50)
    ,OrderItemAmt INT
    )

Du måste ändra dbo.Orders-tabellen och lägga till utländsk nyckel-begränsning för CustomerId från dbo.Customer.

Lösning:

Eftersom tabellerna redan finns, kan skriptet nedan användas för att ändra dbo. Order-tabellen och lägga till en begränsning för främmande nyckel.
Om kolumnen redan finns i den andra tabellen där du vill skapa en utländsk nyckel-begränsning, är du bra att köra skriptet nedan. Eftersom vi inte har kolumnen i tabellen, kommer vi att lägga till CustomerId-kolumnen i dbo.Orders-tabellen först. Kolumnen Namn behöver inte matcha den första tabellkolumnen i vårt fall dbo.Customer.CustomerId
--Add new column to Table in case you don't have    
Alter table dbo.Orders
    Add CustomerId int
     
--Add Foreign Key Constraint on Existing Table
    Alter table dbo.Orders
    Add Constraint Fk_CustomerId  
    Foreign Key(CustomerId) References dbo.Customer(CustomerId)
 
Skapa utländsk nyckelbegränsning på sammansatta kolumner Skriptet nedan kan användas för att skapa utländsk nyckelbegränsning för sammansatta kolumner.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT Identity(1,1)
    ,FName VARCHAR(100) Not Null
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10) Not Null,
    Constraint Pk_FName_SSN Primary Key (FName,SSN)
    )


    CREATE TABLE dbo.Orders (
    OrderId INT Identity(1, 1)
    ,OrderitemName VARCHAR(50)
    ,OrderItemAmt INT
    ,FirstName VARCHAR(100),
     SSN VARCHAR(10) Not Null
    )
 Kolumner finns redan i båda tabellerna så vi behöver inte lägga till kolumner i den andra tabellen. Vi behöver bara skapa Foreign Key Constrain. Nedanstående skript kan användas för att skapa främmande nyckelbegränsningar för sammansatta kolumner.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Du kommer att skriva din syntax för din tabell
Ändra tabell dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2From YourTable) Referenser dbo.YourFirstTable(Column1FromPrimaryKey,ColumnKeyFrom)
Video Demo :Hur man lägger till utländsk nyckelbegränsning till befintlig tabell i SQL Server



  1. Vikten av underhåll på MSDB

  2. Förhindrar den här koden SQL-injektion?

  3. Vad orsakar Mer känns inte igen... fel när Postgresql 11 körs på en Windows-maskin?

  4. Ställ in teckenuppsättningen och sorteringen av en databas i MariaDB