refint
实现引用完整性的函数
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
refint | 1.0 | FUNC | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4880 | refint | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | pg_idkit pgx_ulid pg_uuidv7 permuteseq pg_hashids sequential_uuids topn quantile |
|---|
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
CREATE EXTENSION refint;
用法
提供用于实现引用完整性检查的触发器函数(大部分已被内置外键约束取代)。
CREATE EXTENSION refint;
触发器函数
| 函数 | 说明 |
|---|---|
check_primary_key() | 检查引用表 – 确保被引用行存在 |
check_foreign_key() | 检查被引用表 – 处理删除/更新时的级联操作 |
check_primary_key
引用表上的触发器(AFTER INSERT OR UPDATE)。参数:引用列名、被引用表名、被引用列名。
CREATE TRIGGER check_fk
AFTER INSERT OR UPDATE ON orders
FOR EACH ROW
EXECUTE FUNCTION check_primary_key('customer_id', 'customers', 'id');
check_foreign_key
被引用表上的触发器(AFTER DELETE OR UPDATE)。参数:引用表数量、操作(cascade、restrict 或 setnull)、主键列,然后是引用表和列的配对。
CREATE TRIGGER check_ref
AFTER DELETE OR UPDATE ON customers
FOR EACH ROW
EXECUTE FUNCTION check_foreign_key(1, 'cascade', 'id', 'orders', 'customer_id');