外键约束(Foreign Key Constraint)是关系型数据库中用于建立两个表之间联系的一种约束。它确保一个表中的数据与另一个表中的数据相对应,从而维护数据的完整性和一致性。
外键约束广泛应用于各种需要维护数据关联性的场景,例如:
原因:当尝试插入的数据违反了外键约束时(例如,引用的主键不存在),插入操作会失败。
解决方法:
示例代码:
-- 创建主表
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(255)
);
-- 创建从表,并添加外键约束
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
-- 尝试插入违反外键约束的数据
INSERT INTO orders (id, customer_id, order_date) VALUES (1, 999, '2023-04-01'); -- 会失败,因为customer_id=999不存在于customers表中
原因:当尝试更新的数据违反了外键约束时(例如,更新后的值引用了不存在的主键),更新操作会失败。
解决方法:
示例代码:
-- 更新违反外键约束的数据
UPDATE orders SET customer_id = 999 WHERE id = 1; -- 会失败,因为customer_id=999不存在于customers表中
原因:当尝试删除的数据被其他表的外键引用时,删除操作会失败。
解决方法:
示例代码:
-- 创建从表,并添加外键约束,启用级联删除
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE
);
-- 删除客户记录,级联删除相关订单记录
DELETE FROM customers WHERE id = 1; -- 会自动删除orders表中customer_id=1的所有记录
领取专属 10元无门槛券
手把手带您无忧上云