sql >> Database >  >> RDS >> Sqlserver

Hoe een Foreign key Constraint toe te voegen aan een bestaande tabel in SQL Server - SQL Server / TSQL Tutorial Part 68

Scenario:

U heeft al twee tabellen dbo.Customer en dbo.Orders aangemaakt. Primaire sleutel wordt gemaakt in de kolom CustomerId in de tabel dbo.Klant.
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
    )

U moet de tabel dbo.Orders wijzigen en een beperking voor een externe sleutel toevoegen voor CustomerId van dbo.Customer.

Oplossing:

Aangezien de tabellen al aanwezig zijn, kan het onderstaande script worden gebruikt om de dbo.Orders-tabel te wijzigen en een beperking voor buitenlandse sleutels toe te voegen.
Als de kolom al bestaat in de tweede tabel waarop u een beperking voor buitenlandse sleutels wilt maken, bent u goed om het onderstaande script uit te voeren. Omdat we de kolom niet in de tabel hebben, gaan we eerst de CustomerId-kolom in de tabel dbo.Orders toevoegen. De kolomnaam hoeft niet overeen te komen met de eerste tabelkolom in ons geval 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)
 
Creëer een beperking voor externe sleutels op samengestelde kolommen Het onderstaande script kan worden gebruikt om een ​​externe sleutelbeperking voor samengestelde kolommen te maken.
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
    )
 Kolommen bestaan ​​al in beide tabellen, dus we hoeven geen kolommen toe te voegen aan de tweede tabel. We hoeven alleen Foreign Key Constrain te maken. Onderstaand script kan worden gebruikt om Foreign Key Constraint voor samengestelde kolommen te maken.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
U schrijft uw syntaxis voor uw tabel
Wijzig tabel dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Referenties dbo.YourFirstTable(Column1From>



  1. SQL-injectie in ASP.Net voorkomen

  2. Voorkom automatische verhoging van InnoDB OP DUPLICATE KEY

  3. Typecast string naar geheel getal

  4. Binaire gegevens in MySQL