sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo agregar una restricción de clave externa a una tabla existente en SQL Server - Tutorial de SQL Server / TSQL, parte 68

Escenario:

Ya ha creado dos tablas dbo.Customer y dbo.Orders. La clave principal se crea en la columna CustomerId en la tabla 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
    )

Debe modificar la tabla dbo.Orders y agregar una restricción de clave externa para CustomerId de dbo.Customer.

Solución:

Como las tablas ya están presentes, la siguiente secuencia de comandos se puede usar para modificar la tabla dbo.Orders y agregar una restricción de clave externa.
Si la columna ya existe en la segunda tabla en la que desea crear una restricción de clave externa, debe bueno para ejecutar el siguiente script. Como no tenemos la columna en la tabla, primero agregaremos la columna CustomerId en la tabla dbo.Orders. El nombre de la columna no tiene que coincidir con la primera columna de la tabla en nuestro 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)
 
Crear restricción de clave externa en columnas compuestas El siguiente script se puede usar para crear restricciones de clave externa para columnas compuestas.
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
    )
 Las columnas ya existen en ambas tablas, por lo que no tenemos que agregar columnas a la segunda tabla. Solo necesitamos crear una restricción de clave externa. La siguiente secuencia de comandos se puede utilizar para crear restricciones de clave externa para columnas compuestas.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Usted escribirá su sintaxis para su tabla
Alterar tabla dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Referencias dbo.YourFirstTable(Column1FromPrimaryKey,Column2FromPrimaryKey)

Video Demostración:cómo agregar una restricción de clave externa a una tabla existente en SQL Server