MySQL中的外鍵是非常重要的概念,一般用于約束表之間的關系。在MySQL中,外鍵有三種模式,分別是:
1. CASCADE:當父表中的數據被刪除或更新時,如果子表中存在對應的數據,那么子表中的數據會跟著被刪除或更新。例如:
CREATE TABLE parent ( id INT PRIMARY KEY, name VARCHAR(20) ); CREATE TABLE child ( id INT PRIMARY KEY, name VARCHAR(20), parent_id INT, CONSTRAINT fk_parent_id FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE );
在以上代碼中,當我們刪除parent表中的某一行數據時,如果child表中有對應的parent_id,則child表中的數據也會被刪除。
2. SET NULL:當父表中的數據被刪除或更新時,如果子表中存在對應的數據,那么子表中的對應列的值會被設置為NULL。例如:
CREATE TABLE parent ( id INT PRIMARY KEY, name VARCHAR(20) ); CREATE TABLE child ( id INT PRIMARY KEY, name VARCHAR(20), parent_id INT, CONSTRAINT fk_parent_id FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE SET NULL );
在以上代碼中,當我們刪除parent表中的某一行數據時,如果child表中有對應的parent_id,則child表中的parent_id列的值會被設置為NULL。
3. NO ACTION:當父表中的數據被刪除或更新時,如果子表中存在對應的數據,則MySQL將不允許該行數據的刪除或更新操作。例如:
CREATE TABLE parent ( id INT PRIMARY KEY, name VARCHAR(20) ); CREATE TABLE child ( id INT PRIMARY KEY, name VARCHAR(20), parent_id INT, CONSTRAINT fk_parent_id FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE NO ACTION );
在以上代碼中,當我們想要刪除parent表中的某一行數據時,如果child表中有對應的parent_id,則MySQL將不允許該行數據的刪除操作。
下一篇css讓網站變黑白