赞
踩
在 PostgreSQL 中,外键(Foreign Key)是一种数据库约束,用于维护表之间的关联关系。外键确保一个表的一列(子列)的值引用了另一个表(父表)的主键或唯一键列的值。这有助于维护表之间的一致性和完整性,以及执行引用完整性检查。
外键约束的创建:要在表中创建外键,你需要使用 FOREIGN KEY
约束。外键约束会将一个表的列与另一个表的主键或唯一约束关联起来。示例:
CREATE TABLE orders (
order_id serial PRIMARY KEY,
customer_id integer,
order_date date,
-- 创建外键约束,将 customer_id 与 customers 表的 customer_id 关联
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
外键约束的作用:
级联操作:外键约束支持以下级联操作:
ON DELETE CASCADE
:当父表的行被删除时,相关的子表行也将被删除。ON UPDATE CASCADE
:当父表的主键被更新时,相关的子表行也将被更新。SET NULL
, SET DEFAULT
, RESTRICT
和 NO ACTION
也是可用的。外键的限制:
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
-- weather表中的city指向cites表中的city主键
CREATE TABLE weather (
city varchar(80) references cities(city),
temp_lo int,
temp_hi int,
prcp real,
date date
);
现在尝试插入一个非法的记录:
INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
ERROR: insert or update on table "weather" violates foreign key constraint "weather_city_fkey"
"weather_city_fkey"
DETAIL: Key (city)=(Berkeley) is not present in table "cities".
此时执行插入的语句抛出了一个外键约束的异常,因为向weather
表中插入的数据中,包含了主表cites
中不存在的数据Berkeley
NULL
值,除非父表的唯一键列也允许 NULL
。DROP CONSTRAINT
语句来删除外键约束。ALTER TABLE weather DROP CONSTRAINT weather_city_fkey;
外键名字默认是附表名_主表名_fkey
。
PostgreSQL 的外键约束是保持数据库完整性的重要工具之一,它有助于确保数据的一致性,同时支持建立复杂的数据模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。