詳解如何定義SQL Server外關鍵字約束

2021-10-08 14:33:59 字數 1264 閱讀 9368

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 ]

[ on update ] ]

[ not for replication

各引數說明如下:

references

指定要建立關聯的表的資訊。

ref_table

指定要建立關聯的表的名稱。

ref_column

指定要建立關聯的表中的相關列的名稱。

以下是**片段:

on delete

指定在刪除表中資料時,對關聯表所做的相關操作。在子表中有資料行與父表中的對應資料行相關聯的情況下,如果指定了值cascade,則在刪除父表資料行時會將子表中對應的資料行刪除;如果指定的是no action,則sql server 會產生乙個錯誤,並將父表中的刪除操作回滾。no action 是預設值。

以下是**片段:

on update

指定在更新表中資料時,對關聯表所做的相關操作。在子表中有資料行與父表中的對應資料行相關聯的情況下,如果指定了值cascade,則在更新父表資料行時會將子表中對應的資料行更新;如果指定的是no action,則sql server 會產生乙個錯誤,並將父表中的更新操作回滾。no action 是預設值。

以下是**片段:

not for replication

指定列的外關鍵字約束在把從其它表中複製的資料插入到表中時不發生作用。

詳解SQL Server如何鏈結遠端MySQL

測試winserver2012r2 sqlserver2008r2 成功。最近遇到 sql如何鏈結遠端mysql 這個問題,現在問題終於解決,特把方法貼出來 我所用的作業系統是win7,資料庫是sql2005。1 在sql server伺服器上安裝mysql odbc驅動 2 安裝好後,在管理工具 ...

詳解SQLServer如何鏈結遠端MySQL資料庫

1 在sql server伺服器上安裝mysql odbc驅動 位址 2 安裝好後,在管理工具 odbc資料來源 系統dsn 新增 選擇 mysql odbc 3.51 driver 完成 會跳出來mysql連線引數.data source name 資料來源名稱 decription 描述,隨便寫...

sql server 定義主鍵

drop table father create table father id int identity 1,1 primary key,name varchar 20 not null,age int not null drop table mother create table mother ...