# 外键约束

URL: https://caijiao.org/mariadb/table/foreign-key
Source: docs/mariadb/table/foreign-key.md
Description: 本节介绍 MariaDB 中外键约束的概念、作用以及如何创建和管理外键，确保数据库表之间的数据关联和完整性。

## 1. 什么是外键约束

外键（Foreign Key）用于在两个表之间建立关联，保证引用的完整性。外键字段的值必须在被引用表的主键或唯一键中存在。

## 2. 创建外键约束

创建表时定义外键：

```sql
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);
````

修改已有表添加外键：

```sql
ALTER TABLE orders
ADD CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id);
```

## 3. 外键约束的选项

* `ON DELETE`：指定当被引用数据被删除时的行为，如 `CASCADE`（级联删除）、`SET NULL`（设置为 NULL）等。
* `ON UPDATE`：指定当被引用数据被更新时的行为。

示例：

```sql
ALTER TABLE orders
ADD CONSTRAINT fk_user
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
```

## 4. 删除外键约束

先查看外键名称：

```sql
SHOW CREATE TABLE orders;
```

然后删除外键：

```sql
ALTER TABLE orders
DROP FOREIGN KEY fk_user;
```

---

外键约束有助于维护数据一致性，防止孤立记录和错误引用。
