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