Postgres约束参考

问题描述

定义字段时,之间有什么区别

,cadastre           integer NOT NULL,CONSTRAINT fkey_affaire_vl_cadastre FOREIGN KEY(cadastre)
    REFERENCES public.vl_cadastre (obj_id) MATCH SIMPLE
    ON UPDATE RESTRICT ON DELETE RESTRICT

直接

,cadastre           integer NOT NULL REFERENCES public.cadastre (obj_id)

解决方法

两个构造都创建外键。该短表达式称为 inline 外键。

主要区别在于,长表达式允许您选择约束的名称,而第一个则不允许。如果您以后需要操纵该约束(例如删除它),这很方便,因为您事先知道它的名称。

在您的代码中,第一个示例使用选项on update restricton delete restrict。外键声明的内联形式也支持此功能。