sql >> Databáze >  >> RDS >> Sqlserver

Jak přidat omezení cizího klíče do existující tabulky v SQL Server - SQL Server / TSQL výukový program, část 68

Scénář:

Již jste vytvořili dvě tabulky dbo.Customer a dbo.Orders. Primární klíč je vytvořen ve sloupci CustomerId v tabulce 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
    )

Musíte upravit tabulku dbo.Orders a přidat omezení cizího klíče pro CustomerId z dbo.Customer.

Řešení:

Vzhledem k tomu, že tabulky již existují, lze níže uvedený skript použít ke změně tabulky dbo.Orders a přidání omezení cizího klíče.
Pokud sloupec již existuje ve druhé tabulce, ve které byste chtěli vytvořit omezení cizího klíče, je dobré spustit níže uvedený skript. Protože v tabulce nemáme sloupec, nejprve přidáme sloupec CustomerId do tabulky dbo.Orders. Sloupec Name se v našem případě nemusí shodovat s prvním sloupcem tabulky 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)
 
Vytvoření omezení cizího klíče u složených sloupců Níže uvedený skript lze použít k vytvoření omezení cizího klíče pro složené sloupce.
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
    )
 Sloupce již existují v obou tabulkách, takže nemusíme přidávat sloupce do druhé tabulky. Potřebujeme pouze vytvořit omezení cizího klíče. Níže uvedený skript lze použít k vytvoření omezení cizího klíče pro složené sloupce.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Napíšete si syntaxi pro vaši tabulku
Změnit tabulku dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Reference dbo.YourFirstTable(Column1FromPrimaryKey,Column2Key,Column>PrimaryKey,Column2Key,Column Demo :Jak přidat omezení cizího klíče do existující tabulky na SQL Server



  1. Mytop – Užitečný nástroj pro sledování výkonu MySQL/MariaDB v Linuxu

  2. Operátor SQLite UNION

  3. Kontrola více sloupců pro jednu hodnotu

  4. Identifikace sporu sekvencí ASH v RAC