Apa itu Kunci Asing di Tabel SQL Server:
Foreign Key dalam sebuah tabel adalah kolom atau kumpulan kolom yang menyediakan link antar data dalam dua tabel. Kunci Asing dalam sebuah tabel menunjuk ke kunci utama di tabel lain.Mari kita buat Tabel dbo.Pelanggan dengan Kunci Utama dengan menggunakan pernyataan DDL di bawah ini
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) )
Seperti yang Anda lihat bahwa Customerid adalah kunci utama di dbo.Tabel Pelanggan.
Saat kami siap dengan tabel pertama kami dan memiliki Kunci Utama, kami baik untuk pergi dan membuat tabel kedua dengan Batasan Kunci asing.
CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,Customer_id INT FOREIGN KEY REFERENCES Customer(CustomerId) )
Anda dapat melihat bahwa kami telah menambahkan kolom Customer_id di tabel dbo.Orders yang merujuk ke Customerid di tabel dbo.Customer.
Kunci utama di tabel pertama adalah Customerid dan Kolom Foreign Key di tabel kedua adalah id_Pelanggan, itu berarti kolom tidak harus memiliki nama yang sama. Sebaiknya gunakan nama yang sama sehingga saat Anda menulis kueri dan bergabung dengan tabel, Anda tidak perlu melihat mana yang merupakan kunci utama dan mana yang merupakan kunci asing, melainkan Anda akan mengetahui bahwa nama kolom yang sama ada dalam hubungan. .
Mari kita sisipkan beberapa record dan lihat cara kerja Batasan Kunci Asing.
insert into dbo.Customer (CustomerId,FName, LName,SSN) values (1,'Aamir','Shahzad','000-000-00') insert into dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) values ('TV',1,1)
Kedua record akan dimasukkan dengan baik, karena kita memasukkan customerid yang sama di dbo.Pesanan yang ada di dbo.Customer.
Jika kita akan mencoba memasukkan nilai apa pun di dbo.Pesanan yang tidak ada di dbo.Pelanggan (CustomerId), Ini akan melalui kesalahan karena batasan kunci asing.
insert into dbo.Orders (OrderItemName,OrderItemAmt,Customer_Id) values ('TV',1,2)
Saat kita menjalankan query di atas, terjadi error karena kita tidak memiliki 2 sebagai Customerid di tabel dbo.Customer.
Msg 547, Level 16, State 0, Line 28Pernyataan INSERT bertentangan dengan FOREIGN KEY batasan "FK__Orders__Pelanggan__286302EC". Konflik terjadi pada database "YourDatabaseName", tabel "dbo.Customer", kolom 'Customerid'.Pernyataan telah dihentikan.
Video Demo :Apa itu Foreign Key Constraint dan Cara Membuatnya Batasan Kunci Asing dalam SQL