Сценарий:
Вече сте създали две таблици dbo.Customer и dbo.Orders. Първичният ключ се създава в колоната CustomerId в таблицата 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
) Трябва да промените таблицата dbo.Orders и да добавите ограничение на външния ключ за CustomerId от dbo.Customer.
Решение:
Тъй като таблиците вече присъстват, скриптът по-долу може да се използва за промяна на таблицата dbo.Orders и добавяне на ограничение на външния ключ.Ако колоната вече съществува във втората таблица, върху която искате да създадете ограничение на външния ключ, вие сте добре е да стартирате скрипта по-долу. Тъй като нямаме колоната в таблицата, първо ще добавим колона CustomerId в таблицата dbo.Orders. Името на колоната не трябва да съвпада с първата колона на таблицата в нашия случай 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) Създаване на ограничение за външен ключ върху съставни колони Скриптът по-долу може да се използва за създаване на ограничение на външния ключ за съставни колони.
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
) Колоните вече съществуват и в двете таблици, така че не е нужно да добавяме колони към втората таблица. Трябва само да създадем ограничение на външния ключ. Скриптът по-долу може да се използва за създаване на ограничение на външния ключ за композитни колони.
Alter table dbo.Orders
Add Constraint Fk_Order_Customer_FName_SSN
FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN) Ще напишете своя синтаксис за вашата таблица
Променете таблицата dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Референции dbo.YourFirstTable(Column1FromPrimaryKomary)>
PrimaryKe
Демо :Как да добавите ограничение на външния ключ към съществуваща таблица в SQL Server