SQLSERVER主外來鍵的關聯

2021-06-22 18:07:06 字數 2813 閱讀 8973

那就先看看sql的技術幫助裡的吧:

foreign key 約束

外來鍵約束與

主鍵約束

或唯一約束

一起在指定表中強制引用完整性。例如,可以在publishers表的title_id列中放置乙個外來鍵約束,以保證這一列中的輸入值與titlestitle_id列中的現有值匹配。

在資料庫關係圖中,當建立從乙個附加了主鍵約束或唯一約束的表到另乙個表之間的關係時,外來鍵約束將自動新增到指定的列上

外來鍵 (fk) 是用於建立和加強兩個表資料之間的鏈結的一列或多列。通過將儲存表中主鍵值的一列或多列新增到另乙個表中,可建立兩個表之間的鏈結。這個列就成為第二個表的外來鍵。

當建立或更改表時可通過定義 foreign key 約束來建立外來鍵。

例如,資料庫pubs中的titles表與publishers表有鏈結,因為在書名和出版商之間存在邏輯聯絡。titles表中的pub_id列與publishers表中的主鍵列相對應。titles表中的pub_id列是到publishers表的外來鍵。

foreign key 約束並不僅僅只可以與另一表的 primary key 約束相鏈結,它還可以定義為引用另一表的 unique 約束。foreign key 約束不允許空值,但是,如果任何組合 foreign key 約束的列包含空值,則將跳過 foreign key 約束的校驗。

說明foreign key 約束可引用同一資料庫中的表或同一表(自引用表)內的列,例如,乙個包含下面三列的雇員表:employee_numberemployee_namemanager_ employee_number。由於經理本身也是雇員,所以從manager_employee_number列到employee_number列存在外來鍵關係。

儘管 foreign key 約束的主要目的是控制儲存在外鍵表中的資料,但它還可以控制對主鍵表中資料的修改。例如,如果在publishers表中刪除乙個出版商,而這個出版商的 id 在titles表中記錄書的資訊時使用了,則這兩個表之間關聯的完整性將被破壞,titles表中該出版商的書籍因為與publishers表 中的資料沒有鏈結而變得孤立了。foreign key 約束防止這種情況的發生。如果主鍵表中資料的更改使之與外來鍵表中資料的鏈結失效,則這種更改是不能實現的,從而確保了引用完整性。如果試圖刪除主鍵表中的 行或更改主鍵值,而該主鍵值與另乙個表的 foreign key 約束值相關,則該操作不可實現。若要成功更改或刪除 foreign key 約束的行,可以先在外鍵表中刪除外來鍵資料或更改外來鍵資料,然後將外來鍵鏈結到不同的主鍵資料上去。

foreign key 約束是索引的候選約束,其原因有以下兩點:

以下是網上的乙個小例子,

-- 建立表author :

create table [dbo].[author] (

[id] [bigint] not null ,

[authorname] [char] (10) null ,

[address] [char] (480) null ,

[introduction] [ntext] null

) -- 建立表mybbs:

reate table [dbo].[mybbs] (

[id] [bigint] identity (1, 1) not null ,

[authorid] [bigint] not null ,

[title] [char] (40) null ,

[date_of_created] [datetime] null ,

[abstract] [char] (480) null ,

[content] [ntext] null

) 設定表mybbs中的authorid為外來鍵,參照author表的id欄位,直接使用transact sql語句,過程如下:

--增加表mybbs(authorid)的外來鍵約束fk_mybbs_author,表mybbs中的authorid受表author中的主鍵id約束:

begin transaction

alter table dbo.mybbs add constraint fk_mybbs_author

foreign key (authorid)

references dbo.author([id]) on update cascade on delete cascade

--刪除外來鍵約束fk_mybbs_author:

--alter table dbo.mybbs drop constraint fk_mybbs_author

--rollback

commit transaction

上 面on update cascade,on delete cascade兩個選項,指明以後author表的id欄位有delete,update操作時,mybbs表中的id也會被級聯刪除或更新。如果沒有選 中,是不可以對author表中已被mybbs表關聯的id進行update或者delete操作的。

mysql建立主外來鍵關聯 mysql主外來鍵建立心得

mysql主主外來鍵建立 1 確保參照的表和字段是存在的 2 關聯表必須是innodb儲存型別 3 必須設定主關聯表主鍵 4 主鍵與外來鍵資料型別和字元編碼 unsigned 必須一致 5 確保以上宣告的句法是正確的 附 mysql建立表預設型別為 myisam 如果要改變預設表型別可在my.inf...

找出主外來鍵關聯的表

關閉主外來鍵約束 select alter table table name disable constraint constraint name from user constraints where constraint type r 啟動主外來鍵約束 select alter table ta...

SQL server新增主外來鍵約束

新增主鍵約束 alter table 表名 add constraint 約束名 primary key 主鍵 新增唯一約束 alter table 表名 add constraint 約束名 unique 字段 新增預設約束 alter table 表名 add constraint 約束名 de...