Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara menambahkan Batasan kunci Asing ke tabel yang ada di SQL Server - Tutorial SQL Server / TSQL Bagian 68

Skenario:

Anda telah membuat dua tabel dbo.Customer dan dbo.Orders. Primary Key dibuat pada kolom CustomerId di tabel 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
    )

Anda perlu mengubah tabel dbo.Orders dan menambahkan batasan kunci Asing untuk CustomerId dari dbo.Customer.

Solusi:

Karena tabel sudah ada, skrip di bawah ini dapat digunakan untuk mengubah tabel dbo.Orders dan menambahkan batasan Kunci Asing.
Jika kolom sudah ada di tabel kedua di mana Anda ingin membuat Batasan Kunci Asing, Anda baik untuk menjalankan skrip di bawah ini. Karena kita tidak memiliki kolom di tabel, kita akan menambahkan kolom CustomerId di tabel dbo.Orders terlebih dahulu. Nama kolom tidak harus sama dengan kolom tabel pertama dalam kasus kami 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)
 
Membuat Batasan Kunci Asing pada Kolom Komposit Skrip di bawah ini dapat digunakan untuk membuat Batasan Kunci Asing untuk Kolom Komposit.
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
    )
 Kolom sudah ada di kedua tabel sehingga kita tidak perlu menambahkan kolom ke tabel kedua. Kita hanya perlu membuat Batasan Kunci Asing. Script di bawah ini dapat digunakan untuk membuat Batasan Kunci Asing untuk kolom komposit.
     Alter table dbo.Orders
     Add Constraint Fk_Order_Customer_FName_SSN 
     FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
 
Anda akan menulis sintaks untuk tabel Anda
Alter table dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName,Column2FromYourTable) Referensi dbo.YourFirstTable(Column1FromPrimaryKey,Column2FromPrimaryKey)

Demo :Bagaimana cara menambahkan Batasan Kunci Asing ke Tabel yang ada di SQL Server



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Argumen Opsional dalam Klausa WHERE

  2. Kiat untuk Mengurangi Kompleksitas SQL Server Anda

  3. Cara sederhana untuk mengubah urutan kolom dan baris dalam SQL?

  4. Menghubungkan SQL Server ke Database Java

  5. Peningkatan tempdb di SQL Server 2019