MySQL外部約束(Foreign Key)指的是兩個表之間的關(guān)系,其中一個表的字段(稱為參考表)被用作另一個表的字段的值(稱為外部關(guān)鍵字表)。當創(chuàng)建外部約束時,MySQL將確保外部關(guān)鍵字表中的值與參考表中的相應(yīng)值匹配。
CREATE TABLE orders ( order_id INT AUTO_INCREMENT, customer_id INT NOT NULL, PRIMARY KEY (order_id), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
在上面的代碼中,orders表使用了外部約束,將customer_id列作為外部關(guān)鍵字表。該列必須引用customers表中存在的customer_id列。
如果嘗試執(zhí)行以下查詢,則將顯示錯誤:“Cannot add or update a child row: a foreign key constraint fails”。
INSERT INTO orders (customer_id) VALUES (10);
因為customers表中沒有ID為10的記錄,orders表中的外部約束將阻止該操作。
通過使用外部約束,可以確保數(shù)據(jù)的完整性和一致性。但是,在使用外部約束時,需要確保參考表和外部關(guān)鍵字表的數(shù)據(jù)類型和長度相同,以防止數(shù)據(jù)類型不匹配錯誤。