大家好,萱萱來(lái)為大家解答以下的問(wèn)題,關(guān)于外鍵約束的sql命令是什么,外鍵約束這個(gè)很多人還不知道,那么現(xiàn)在讓我?guī)е蠹乙黄饋?lái)看看吧!
外鍵約束是指用于在兩個(gè)表之間建立關(guān)系,需要指定引用主表的哪一列。
外鍵約束對(duì)子表如此檢查處理:在子表上進(jìn)行INSERT、UPDATE?操作的限制是,要和主表中的主鍵值匹配,或?yàn)镹ULL,?否則不允許。
外鍵約束對(duì)父表如此檢查處理:在父表_上進(jìn)行UPDATE、DELETE操作的限制,取決于在定義子表的外鍵時(shí)指定的ON?UPDATE、ON?DELETE子句(不同的DBMS支持的情況不盡相同)。
眾ON?DELETE子?句各選項(xiàng)的作用:No?ACTION?:刪除主表記錄,如果子表中有和主表匹配的記錄,則不允許(產(chǎn)生一個(gè)錯(cuò)誤提示)。
此為默認(rèn)操作(不指定ON?DELETE子句,?系統(tǒng)自動(dòng)采取的操作)。
2、CASCADE??(級(jí)聯(lián)):刪除主表記錄,也將刪除子表中的匹配記錄。
3、SET?NULL?:刪除主表記錄,將子表中的匹配記錄的外鍵值改為NULL。
4、SET?DEFAULT?:刪除主表記錄,將子表中的匹配記錄的外鍵值改為默認(rèn)值。
眾ONUPDATE子句各選項(xiàng)的作用。
擴(kuò)展資料外鍵的用途是確保數(shù)據(jù)的完整性。
它通常包括以下幾種:?實(shí)體完整性,確保每個(gè)實(shí)體是唯一的(通過(guò)主鍵來(lái)實(shí)施)?2、域完整性,確保屬性值只從一套特定可選的集合里選擇?3、關(guān)聯(lián)完整性,確保每個(gè)外鍵或是NULL(如果允許的話(huà))或含有與相關(guān)主鍵值相配的值。
約束的主要目的是控制存儲(chǔ)在外鍵表中的數(shù)據(jù),但它還可以控制對(duì)主鍵表中數(shù)據(jù)的修改。
例如,如果在 publishers 表中刪除一個(gè)出版商,而這個(gè)出版商的 ID 在 titles 表中記錄書(shū)的信息時(shí)使用了。
則這兩個(gè)表之間關(guān)聯(lián)的完整性將被破壞,titles 表中該出版商的書(shū)籍因?yàn)榕c publishers 表中的數(shù)據(jù)沒(méi)有鏈接而變得孤立了。
FOREIGN KEY 約束防止這種情況的發(fā)生。
如果主鍵表中數(shù)據(jù)的更改使之與外鍵表中數(shù)據(jù)的鏈接失效,則這種更改是不能實(shí)現(xiàn)的,從而確保了引用完整性。
如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個(gè)表的 FOREIGN KEY 約束值相關(guān),則該操作不可實(shí)現(xiàn)。
若要成功更改或刪除 FOREIGN KEY 約束的行,可以先在外鍵表中刪除外鍵數(shù)據(jù)或更改外鍵數(shù)據(jù),然后將外鍵鏈接到不同的主鍵數(shù)據(jù)上去。
?參考資料來(lái)源:百度百科--外鍵參考資料來(lái)源:百度百科--約束。
本文今天分享完畢,希望對(duì)您有所幫助。
標(biāo)簽: 外鍵約束
免責(zé)聲明:本文由用戶(hù)上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!