SQL Server外關鍵字約束的定義
SQL Server外關鍵字約束的重要性不言而喻,下面就讓我們一起來了解一下應該如何定義SQL Server外關鍵字約束。
SQL Server外關鍵字約束定義了表之間的關系。當一個表中的一個列或多個列的組合和其它表中的主關鍵字定義相同時,就可以將這些列或列的組合定義為外關鍵字,并設定它適合哪個表中哪些列相關聯。這樣,當在定義SQL Server主關鍵字約束的表中更新列值,時其它表中有與之相關聯的外關鍵字約束的表中的外關鍵字列也將被相應地做相同的更新。外關鍵字約束的作用還體現在,當向含有外關鍵字的表插入數據時,如果與之相關聯的表的列中無與插入的外關鍵字列值相同的值時,系統會拒絕插入數據。與主關鍵字相同,不能使用一個定義為TEXT 或IMAGE 數據類型的列創建外關鍵字。外關鍵字最多由16 個列組成。
定義外關鍵字約束的語法如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name1[, column_name2,…,column_name16])
REFERENCES ref_table [ (ref_column1[,ref_column2,…, ref_column16] )]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ]
[ NOT FOR REPLICATION ]
各參數說明如下:
REFERENCES
指定要建立關聯的表的信息。
ref_table
指定要建立關聯的表的名稱。
ref_column
指定要建立關聯的表中的相關列的名稱。
ON DELETE {CASCADE | NO ACTION}
指定在刪除表中數據時,對關聯表所做的相關操作。在子表中有數據行與父表中的對應數據行相關聯的情況下,如果指定了值CASCADE,則在刪除父表數據行時會將子表中對應的數據行刪除;如果指定的是NO ACTION,則SQL Server 會產生一個錯誤,并將父表中的刪除操作回滾。NO ACTION 是缺省值。
ON UPDATE {CASCADE | NO ACTION}
指定在更新表中數據時,對關聯表所做的相關操作。在子表中有數據行與父表中的對應數據行相關聯的情況下,如果指定了值CASCADE,則在更新父表數據行時會將子表中對應的數據行更新;如果指定的是NO ACTION,則SQL Server 會產生一個錯誤,并將父表中的更新操作回滾。NO ACTION 是缺省值。
NOT FOR REPLICATION
指定列的外關鍵字約束在把從其它表中復制的數據插入到表中時不發生作用。
【編輯推薦】