USE tempdb
GO
----- 建立 tblOrders、tblCustomer Table
DROP TABLE IF EXISTS tblOrders
DROP TABLE IF EXISTS tblCustomer
CREATE TABLE tblOrders (
OrderID int Primary Key identity(1,1) ,
CustomerID int)
CREATE TABLE tblCustomers (
CustomerID int Primary Key identity(1,1),
CustomerName nvarchar(50))
----- 建立 tblCustomers 資料
INSERT INTO tblCustomers (CustomerName) VALUES
(N'客戶1') , (N'客戶2') , (N'客戶3') , (N'客戶4') , (N'客戶5')
----- 沒有 FK - insert 資料並觀察執行計畫
INSERT INTO tblOrders (CustomerID) VALUES(1)
----- 建立 tblOrders、tblCustomers 之間的 Foreign Key
ALTER TABLE [dbo].[tblOrders] WITH CHECK ADD CONSTRAINT [FK_tblOrders_tblCustomers] FOREIGN KEY(CustomerID)
REFERENCES [dbo].[tblCustomers] (CustomerID)
----- 存在 FK - insert 資料並觀察執行計畫
INSERT INTO tblOrders (CustomerID) VALUES(2)
沒有 FK 時
對 tblOrders insert 資料,就單純看見 [叢集索引插入]
可以觀察到對 tblOrders insert 資料,會另外發動 Index Seek 去 tblCustomer 內確認,並在 assert 判斷是否違反 FK
沒有留言:
張貼留言