首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么临时表不能引用PostgreSQL中的常规表(非临时表)?

为什么临时表不能引用PostgreSQL中的常规表(非临时表)?
EN

Database Administration用户
提问于 2019-05-25 13:35:07
回答 1查看 1.3K关注 0票数 2

为什么临时表不能引用PostgreSQL中的非临时表?当我运行以下命令时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE foo ( a int PRIMARY KEY );
CREATE TEMP TABLE bar ( a int REFERENCES foo );

我明白了,

错误:临时表上的约束只能引用临时表。

我原以为这是有用的,所以我回到了PostgreSQL 8.4,我发现即使在那时,它也是错误的,

错误:无法从临时表约束引用永久表

但为什么要这样?为什么临时表不能引用非临时表。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-05-25 18:07:01

外键约束有两个方面:

  • 当插入子记录(或更新其外键)时,父记录必须存在。
  • 删除父记录(或更新其主键)时,必须不存在子记录。

Postgres通过在两个表上安装触发器来执行存在性检查来实现这一点。但是,如果子触发器是临时表,则父触发器就不能工作:为了保证引用的完整性,需要为所有数据库用户触发触发器,但是只有在创建临时表的会话中才能看到临时表数据,因此不能强制执行该约束。

即使这是可能的,它也可能有点过于侵入性;仅仅因为其他用户从临时数据集引用它,就很少希望父级的DELETE失败。但是,如果在这种情况下确实需要保持完整性,则可以通过使用SELECT ... FOR KEY SHARE锁定父记录来获得相同的效果。

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/239060

复制
相关文章
Bazel 构建 protobuf
为了将proto文件转成编程语言代码,需要安装编译工具protoc。本篇验证使用 Bazel 构建 是否能和手动执行 protoc 和插件 的编译一样的结果。
后端云
2022/11/25
1.7K0
Bazel 编译工具; tensorflow 编译
tensorflow bazel 编译命令: (编译cpu支持的版本,限制编译的内存为2GB, 并兼容旧版本的ABI)
西湖醋鱼
2020/12/30
1.5K0
Envoy编译篇:bazel构建介绍
本篇文章通过https://github.com/bazelbuild/examples/tree/main/cpp-tutorial里面的例子,来简单介绍下bazel构建的基础知识,方便后续查找和学习。
灰子学技术
2022/03/29
1.6K0
扩展 Bazel 的构建语言
宏是实例化规则的函数。当 BUILD 文件过于重复或过于复杂时,它就非常有用,因为它允许您重复使用某些代码。
后端云
2022/11/25
1.7K0
扩展 Bazel 的构建语言
Bazel 构建 gRPC server&client
clone grpc-go 官方仓库, 找到 https://github.com/grpc/grpc-go/tree/master/examples/helloworld 添加bazel所需文件 修改后的源码放在:https://github.com/backendcloud/example/tree/master/bazel-sample/bazel-grpc-go 运行gazelle生成BUILD文件: ⚡ root@localhost  ~/grpc-go/examples   master
后端云
2022/11/25
6790
Bazel remote cache
本篇的源码放在: https://github.com/backendcloud/example/tree/master/bazel-remote
后端云
2022/11/25
1.4K0
Bazel genrule
genrule 的 参数 分为:sources,a tool(例如一个内置命令,一个shell脚本),一条命令,outputs
后端云
2022/11/25
1.2K0
Code For Better 谷歌开发者之声——TensorFlow
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md
繁依Fanyi
2023/05/07
2190
bazel源码编译
【bazel】https://github.com/sofu456/bazel 【openjdk】https://github.com/openjdk/jdk.git
sofu456
2020/09/17
1.4K0
【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结
最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误:
黄鸿波
2020/11/19
2.3K0
【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结
bazel 出现no such package '@org_tensorflow//tensorflow' 错误
问题 在执行 bazel tensorflow serving 的时候出现下面的错误 ERROR: error loading package ‘’: in /home/wangcongying/tools/serving/tensorflow_serving/workspace.bzl: Encountered error while reading extension file ‘tensorflow/workspace.bzl’: no such package ‘@org_tensorflow/
莫斯
2020/09/10
2.1K0
[译]Android TensorFlow机器学习示例
本文介绍了一种在Android平台上使用TensorFlow进行物体检测的方法。首先介绍了Android平台如何调用TensorFlow,然后介绍了如何使用预训练的模型进行物体检测。最后,给出了一段示例代码和一张运行结果图。
MelonTeam
2018/01/04
8980
[译]Android TensorFlow机器学习示例
记录我一次详细的TensorFlow源代码编译构建安装包总结
最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误: 于是我去Google搜索了下出现这个错误的原因,发现是因为我们服务器的CPU不支持AVX指令集导致的,而使用pip安装的TensorFlow需要依赖AVX指令集,为了确认我们的CPU是否真的不支持AVX指令集,我使用cat /proc/cpuinfo 命令查看了下目前CPU指令集支持情况,发现我们的CPU果然不支持AVX指令集。 又不支持
博文视点Broadview
2023/05/19
1.5K0
记录我一次详细的TensorFlow源代码编译构建安装包总结
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
作者:刘才权 编辑:田 旭 安装平台 1 平台 目前TensorFlow已支持Mac、Ubuntu和Windows三个主流平台(64位平台), 2 GPU vs CPU 在安装时可以选择安装版本是否
机器学习算法工程师
2018/03/06
1.8K0
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
1.3 centos7源码编译tensorflow-gpu版
很巧的是编译安装tensorflow-gpu版成功了。 tensorflow已经更新到1.13版,官方的linux安装文件采用的是glibc2.23, 而centos只支持到glibc2.17,所以在使用pip install tensorflow-gpu安装后的使用过程中会报错:
锦小年
2019/05/26
2.1K0
Jetson TX1上安装Tensorflow Serving遇到的问题总结
本文的目的是分享在TX1上安装Tensorflow Serving时遇到的主要问题,避免重复踩坑。
ericzli
2018/06/29
2.8K0
Building TensorFlow on Android(译)
本篇文章翻译自tensorflow官网,会加上自己的一些实操讲解,便于大家快速运行起第一个移动端机器学习的demo。 为了让你在Android上开始使用tensorflow,我们将通过两种方式来构建我
巫山老妖
2018/07/20
9240
作为TensorFlow的底层语言,你会用C+构建深度神经网络吗?
选自Matrices.io 作者:Florian Courtial 机器之心编译 参与:李泽南、蒋思源 很多人都知道 TensorFlow 的核心是构建在 C++之上的,但是这种深度学习框架的大多数功能只在 Python API 上才方便使用。 当我写上一篇文章的时候,我的目标是仅使用 TensorFlow 中的 C++ API 和 CuDNN 来实现基本的深度神经网络(DNN)。在实践中,我意识到在这个过程中我们忽略了很多东西。 注意,使用外部操作(exotic operations)训练神经网络是不可能
企鹅号小编
2018/01/19
1.3K0
DeepMind开源Sonnet:可在TensorFlow中快速构建神经网络
选自DeepMind 作者:Malcolm Reynolds等 机器之心编译 参与:李泽南、Ellen Han 昨天,DeepMind 发布了 Sonnet,一个在 TensorFlow 之上用于构建复杂神经网络的开源库。这是继 DeepMind Lab 后,这家谷歌旗下的公司的又一次开源举措。Sonnet 的开源意味着 DeepMind 构建的模型可以更轻松地与所有开发者共享。 距 DeepMind 做出决定,在整个研究机构中使用 TensorFlow(TF) 已将近一年。事实证明这是一个明智的选择——较
机器之心
2018/05/07
1.3K0
DeepMind开源Sonnet:可在TensorFlow中快速构建神经网络
每日一学——TensorFlow的学习
什么是TensorFlow? TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等等。TensorFlow 最初由Google Brain 小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深
计算机视觉研究院
2018/04/17
1.3K0
每日一学——TensorFlow的学习

相似问题

bazel构建Tensorflow

15

用Bazel构建Tensorflow

15

使用bazel构建Tensorflow

11

tensorflow bazel建筑失败

22

用Bazel构建Tensorflow失败(Ubuntu 18.04,Cuda 9.1)

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文