Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como adicionar restrição de chave estrangeira à tabela existente no SQL Server - SQL Server / TSQL Tutorial Part 68

Cenário:

Você já criou duas tabelas dbo.Customer e dbo.Orders. A chave primária é criada na coluna CustomerId na tabela 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
    )

Você precisa alterar a tabela dbo.Orders e adicionar restrição de chave estrangeira para CustomerId de dbo.Customer.

Solução:

Como as tabelas já estão presentes, o script abaixo pode ser usado para alterar a tabela dbo.Orders e adicionar a restrição de chave estrangeira.
Se a coluna já existir na segunda tabela na qual você deseja criar a restrição de chave estrangeira, você está bom executar o script abaixo. Como não temos a coluna na tabela, vamos adicionar a coluna CustomerId na tabela dbo.Orders primeiro. O nome da coluna não precisa corresponder com a primeira coluna da tabela em nosso 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)
 
Criar restrição de chave estrangeira em colunas compostas O script abaixo pode ser usado para criar restrição de chave estrangeira para colunas compostas.
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
    )
 Já existem colunas em ambas as tabelas, então não precisamos adicionar colunas à segunda tabela. Só precisamos criar a restrição de chave estrangeira. O script abaixo pode ser usado para criar restrição de chave estrangeira para colunas compostas.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Você escreverá a sintaxe para sua tabela
Alterar tabela dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Referências dbo.YourFirstTable(Column1FromPrimaryKey,Column2FromPrimaryKey)

Video Demo:Como adicionar restrição de chave estrangeira à tabela existente no SQL Server