📅  最后修改于: 2023-12-03 15:33:44.997000             🧑  作者: Mango
在关系型数据库中,外键是一个用来定义两个表之间联系的约束条件。它指向另一个表中的一个或多个列,并确保这些列中的值对应于另一个表中的某个列中的值。在 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_id
、customer_id
、product_id
和 order_date
列。然后,为 customer_id
和 product_id
列分别创建了外键约束。这些外键约束确保 customer_id
和 product_id
列中的任何值都对应于 customers
和 products
表中的相应列中的值。
在 PostgreSQL 中,外键约束还可以定义级联操作。级联操作是指在一个表中对行进行更新、删除或插入时自动将此操作应用于相关行的过程。
例如,我们可以在创建外键约束时指定 ON DELETE CASCADE
和 ON 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_id
、product_name
、price
和 category
列。然后,我们为 category
列创建了一个外键约束,并指定了 ON DELETE CASCADE
以确保在删除主表中的行时,相关的从表中的行也将被删除。
外键是关系型数据库中一个重要的特性,它允许我们定义两个表之间的联系,并确保这些联系的完整性。在 PostgreSQL 中,我们可以使用约束来创建外键约束,并可以指定级联操作以满足特定的需求。