Skenario:
Anda bekerja sebagai pengembang SQL Server, Anda perlu membuat dua tabel dengan Hubungan Kunci Utama - Asing. Anda ingin membuat Batasan Kunci Asing dengan pengaturan jika catatan akan dihapus dari Tabel Referensi (Tabel Kolom Kunci Utama), tidak harus dihapus dari Tabel Induk (Tabel Batasan Kunci Asing) melainkan nilai harus diperbarui ke Null.Solusi:
Kita dapat menggunakan ON DELETE SET NULL dengan definisi Batasan Kunci Asing untuk mengimplementasikan persyaratan di atas.Mari kita lakukan dengan menggunakan script di bawah ini.
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 ,Customer_id INT FOREIGN KEY REFERENCES Customer(CustomerId) ON DELETE SET NULL ) --insert sample data 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)
Periksa data dalam tabel dengan menggunakan kueri Pilih
Cara membuat Batasan Kunci Asing dengan ON DELETE SET NULL di SQL Server |
Mari kita hapus baris dari Tabel Referensi (Tabel Kolom Kunci Utama) dan periksa apakah catatan masih ada di Tabel Induk (Tabel Batasan Kunci Asing) dan nilai kolom diperbarui ke Null.
--Delete the Record from Referenced Table(PK Column Table) Delete from dbo.Customer where CustomerId=1
Cara menggunakan opsi ON DELETE SET NULL dengan Batasan Kunci Asing di SQL Server |
Seperti yang kita lihat bahwa catatan dihapus dari Tabel Referensi (Tabel Kolom Kunci Utama) tetapi masih ada di Tabel Induk (Tabel Batasan Kunci Asing) tetapi nilainya diperbarui ke Null seperti yang diharapkan.
Demo Video :Cara Membuat Batasan Kunci Asing dengan Opsi ON DELETE SET NULL di SQL Server