更改具有Foreign key約束的表

2021-09-27 09:24:41 字數 1701 閱讀 6734

1、foreign key 說明:

foreign key(外來鍵) 建立起了表與表之間的約束關係,讓表與表之間的資料更具有完整性和關聯性。設想,有兩張表a、b,a表中儲存了許多電腦製造商的資訊,比如聯想、戴爾、惠普和華碩,b表中儲存了許多多型號的電腦,比如lenovo1,lenovo2,hp1,hp2,hp3,dell1,dell2,asus1,現在如何將兩張具有從屬關係(每個電腦品牌下都有很多態號的電腦)的表關聯起來呢?

我們可以在b表中設定外來鍵。首先我們給這個外來鍵關聯關係起個名字xx,外來鍵作為乙個字段我們也要給他起個名字xx,一般起a_id,外來鍵的值就是a表中某乙個欄位的值,一般是id的值。這樣做有什麼意義呢?

很簡單,我們在b表中通過外來鍵字段就可以看出哪些型號的電腦和哪些電腦廠商是相對應的。事實上,電腦程式也是這樣把兩張表關聯起來的。這樣兩張表便具有了從屬關係。這樣也帶來了乙個問題,如果把a表中的某個電腦廠商(比如聯想)刪除了,b表中的lenovo1,lenovo2便沒有了對應的廠商,就處於了游離狀態,這是不被允許的,也就是不允許直接把a中的某一行刪了。那如果需要刪除a表中的某乙個電腦廠商的資訊怎麼辦呢?

這裡有兩種方法:

禁止外來鍵檢測(set foreign_key_checks=0)--> 刪除a表中的資訊--> 恢復外來鍵檢測(set foreign_key_checks=1);

刪除外來鍵(alter table xx drop foreign key xx)--> 刪除a表中的資訊 --> 新建外來鍵(alter table xx add foreign key(xx) references xx on delete cascade on update cascade );   

2、更改有外來鍵約束的表--例項演示

新建資料庫

新建兩張資料表a,b

向資料表a,b中各寫入一條資料

刪除a表中的資料解決方法一:禁止外來鍵檢測,然後刪除資料,再恢復外來鍵檢測

解決方法二:刪除外來鍵約束,然後刪除資料,再恢復外來鍵約束

外來鍵(Foreign Key)約束。

外來鍵的作用 保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料。使兩張表形成關聯,外來鍵只能引用外表中的列的值!用於建立和加強兩個表資料之間的鏈結的一列或多列。通過將儲存表中主鍵值的一列或多列新增到另乙個表中,可建立兩個表之間的鏈結。這個列就成為第二個表的外來鍵。foreign key 約...

SQL 的常用更改表約束

sql 的常用更改表約束 一 修改字段預設值 alter table 表名 drop constraint 約束名字 說明 刪除表的字段的原有約束 alter table 表名 add constraint 約束名字 default 預設值 for 欄位名稱 說明 新增乙個表的字段的約束並指定預設值...

SQL實現新增表,表名更改,列名更改,約束更改等

新建表 create table tablename id int identity 1,1 primary key name varchar 50 default hello null job ntext null creationdt datetime,column4 money null co...