SQLite 中如何定义外键?

推荐答案

在 SQLite 中,可以通过在 CREATE TABLE 语句中使用 FOREIGN KEY 约束来定义外键。外键用于建立表与表之间的关系,确保数据的完整性和一致性。

例如,定义两个表 OrdersCustomers,并在 Orders 表中定义一个外键,引用 Customers 表中的 CustomerID 列:

-- -------------------- ---- -------
------ ----- --------- -
    ---------- ------- ------- ----
    ---- ---- --- ----
--

------ ----- ------ -
    ------- ------- ------- ----
    --------- ---- --- -----
    ---------- --------
    ------- --- ------------ ---------- ---------------------
--

本题详细解读

1. 外键的作用

外键用于确保表与表之间的数据一致性。它通过将一个表中的列与另一个表中的列关联起来,确保在插入或更新数据时,引用的数据必须存在于关联表中。

2. 外键的语法

在 SQLite 中,外键的定义通常在 CREATE TABLE 语句中完成。语法如下:

  • 列名:当前表中要作为外键的列。
  • 关联表名:被引用的表的名称。
  • 关联列名:被引用表中与外键关联的列。

3. 外键的约束

外键约束可以确保以下行为:

  • 插入约束:在插入数据时,外键列的值必须存在于关联表的关联列中。
  • 更新约束:在更新外键列时,新值必须存在于关联表的关联列中。
  • 删除约束:当关联表中的某一行被删除时,可以指定如何处理外键表中的相关行。常见的处理方式包括:
    • CASCADE:级联删除或更新。
    • SET NULL:将外键列设置为 NULL
    • RESTRICT:阻止删除或更新操作。

4. 示例

以下是一个更复杂的示例,展示了如何在 SQLite 中使用外键约束:

-- -------------------- ---- -------
------ ----- ----------- -
    ------------ ------- ------- ----
    -------------- ---- --- ----
--

------ ----- --------- -
    ---------- ------- ------- ----
    ------------ ---- --- -----
    ------------ --------
    ------- --- -------------- ---------- -------------------------
        -- ------ -------
        -- ------ -------
--

在这个示例中,Employees 表中的 DepartmentID 列是一个外键,引用了 Departments 表中的 DepartmentID 列。当 Departments 表中的某一行被删除时,Employees 表中对应的行也会被级联删除。

纠错
反馈