SQL外來鍵約束的含義及建立

yifanwu發表於2021-09-09

建立外來鍵約束可以對sql語句的增刪改有約束作用。
外來鍵取值規則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。


舉例如下:
建立表並插入語句

 CREATE TABLE t_group(
    id INT PRIMARY KEY,
    NAME VARCHAR(30)
)

INSERT INTO t_group VALUES(1,'group1');
INSERT INTO t_group VALUES(2,'group2');

CREATE TABLE t_user(
    id INT PRIMARY KEY,
    NAME VARCHAR(30),
    groupid INT FOREIGN KEY REFERENCES t_group(id)
)

INSERT INTO t_user VALUES(1,'user1',1);
INSERT INTO t_user VALUES(2,'user2',2);

其中,t_user是主表,id列是主鍵,groupid是在表t_group(id)的外來鍵

INSERT INTO t_user VALUES(3,'user3',3);

以上語句因為插入groupid=3,違反外來鍵約束。
插入非空值時,如果主鍵表中沒有這個值,則不能插入。

DELETE FROM t_group WHERE id=2

圖片描述

UPDATE t_group SET id=3 WHERE id=1

圖片描述
如果需要修改外來鍵約束,比如,要在外來鍵上允許級聯修改,但限制刪除,則執行下面語句。

ALTER TABLE t_user DROP CONSTRAINT FK_T_USER_GROUPID

ALTER TABLE t_user ADD CONSTRAINT FK_T_USER_GROUPID FOREIGN KEY(GroupID) 
REFERENCES T_GROUP(ID) ON UPDATE CASCADE ON DELETE no action  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2798022/,如需轉載,請註明出處,否則將追究法律責任。

相關文章