📜  PostgreSQL – 外键(1)

📅  最后修改于: 2023-12-03 15:33:44.997000             🧑  作者: Mango

PostgreSQL - 外键

在关系型数据库中,外键是一个用来定义两个表之间联系的约束条件。它指向另一个表中的一个或多个列,并确保这些列中的值对应于另一个表中的某个列中的值。在 PostgreSQL 中,外键是通过使用约束来实现的。

创建外键

要在 PostgreSQL 中创建外键,需要使用 CREATE TABLE 语句中的 FOREIGN KEY 关键字,例如:

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    customer_id INTEGER,
    product_id INTEGER,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

在这个例子中,我们创建了一个名为 orders 的表,其中包含 order_idcustomer_idproduct_idorder_date 列。然后,为 customer_idproduct_id 列分别创建了外键约束。这些外键约束确保 customer_idproduct_id 列中的任何值都对应于 customersproducts 表中的相应列中的值。

级联操作

在 PostgreSQL 中,外键约束还可以定义级联操作。级联操作是指在一个表中对行进行更新、删除或插入时自动将此操作应用于相关行的过程。

例如,我们可以在创建外键约束时指定 ON DELETE CASCADEON UPDATE CASCADE,以便在删除或更新主表中的行时,相关的从表中的行也将被删除或更新。

CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    product_name VARCHAR(50) NOT NULL,
    price NUMERIC(10,2) NOT NULL,
    category VARCHAR(50) NOT NULL,
    FOREIGN KEY (category) REFERENCES categories(category_id)
        ON DELETE CASCADE
);

在这个例子中,我们创建了一个名为 products 的表,其中包含 product_idproduct_namepricecategory 列。然后,我们为 category 列创建了一个外键约束,并指定了 ON DELETE CASCADE 以确保在删除主表中的行时,相关的从表中的行也将被删除。

总结

外键是关系型数据库中一个重要的特性,它允许我们定义两个表之间的联系,并确保这些联系的完整性。在 PostgreSQL 中,我们可以使用约束来创建外键约束,并可以指定级联操作以满足特定的需求。