Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在一个表中插入数据并确保该表中存在外键?_Postgresql - Fatal编程技术网

Postgresql 如何在一个表中插入数据并确保该表中存在外键?

Postgresql 如何在一个表中插入数据并确保该表中存在外键?,postgresql,Postgresql,我有两个模型/表格:Post和Comment Post通过Comment.Post\u id外键有许多注释 现在,我想插入一个带有指定post\u id的注释,并确保带有id=post\u id的帖子实际上存在,以避免数据库中有引用不存在帖子的注释的情况 所以一般来说,我想从原子的角度: 检查是否存在id为Post\U id的Post 如果存在,则插入带有帖子id的新评论(插入评论时不能删除带有帖子id的帖子) 您描述的正是为什么在关系数据库中实现外键约束并在20世纪80年代末强制实施的原因。您

我有两个模型/表格:Post和Comment

Post
通过
Comment.Post\u id
外键有许多
注释

现在,我想插入一个带有指定
post\u id
的注释,并确保带有
id=post\u id
的帖子实际上存在,以避免数据库中有引用不存在帖子的注释的情况

所以一般来说,我想从原子的角度:

  • 检查是否存在id为Post\U id的Post
  • 如果存在,则插入带有帖子id的新评论(插入评论时不能删除带有帖子id的帖子)

  • 您描述的正是为什么在关系数据库中实现外键约束并在20世纪80年代末强制实施的原因。

    您不能使用外键来确保强制执行此规则吗?嗯,我不熟悉Postgres-您的意思是,如果我将使用外键约束,那么如果我尝试执行,Postgres将返回错误添加带有无效post_id的注释?正确,但这是一个关系数据库功能,不特定于Postgres,请参阅