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

Come aggiungere il vincolo di chiave esterna alla tabella esistente in SQL Server - Tutorial SQL Server/TSQL Parte 68

Scenario:

Hai già creato due tabelle dbo.Customer e dbo.Orders. La chiave primaria viene creata nella colonna CustomerId nella tabella dbo.Customer.
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
    )

È necessario modificare la tabella dbo.Orders e aggiungere il vincolo di chiave esterna per CustomerId da dbo.Customer.

Soluzione:

Poiché le tabelle sono già presenti, lo script seguente può essere utilizzato per modificare la tabella dbo.Orders e aggiungere il vincolo di chiave esterna.
Se la colonna esiste già nella seconda tabella su cui desideri creare il vincolo di chiave esterna, sei buono per eseguire lo script seguente. Poiché non abbiamo la colonna nella tabella, aggiungeremo prima la colonna CustomerId nella tabella dbo.Orders. La colonna Nome non deve corrispondere alla prima colonna della tabella nel nostro caso 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)
 
Crea vincolo di chiave esterna su colonne composite Lo script seguente può essere utilizzato per creare vincoli di chiave esterna per colonne composite.
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
    )
 Le colonne esistono già in entrambe le tabelle, quindi non è necessario aggiungere colonne alla seconda tabella. Abbiamo solo bisogno di creare un vincolo di chiave esterna. Lo script sottostante può essere utilizzato per creare un vincolo di chiave esterna per colonne composte.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Scriverai la sintassi per la tua tabella
Alter table dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Riferimenti dbo.YourFirstTable(Column1FromPrimaryKey,Column2FromPrimaryKey)

Video Demo:come aggiungere un vincolo di chiave esterna alla tabella esistente in SQL Server