首页 / 知识
关于sql:在PostgreSQL中级联删除
2023-04-14 07:34:00

Cascading deletes in PostgreSQL
我有一个数据库,其中有几十个与外键链接的表。 通常情况下,我希望这些约束具有默认的
我最终要做的是转储数据库,编写脚本来处理转储,同时添加了 下次有人会遇到更好的解决方案吗? 您不需要转储和还原。您应该能够删除约束,使用级联重建约束,进行删除,再次删除约束,然后使用strict重建约束。
我是Postgres的新手,所以不确定TRUNCATE与DROP之间的权衡是什么。 您可以将外键约束创建为DEFERRABLE。然后,您可以在清理数据时临时禁用它们,并在完成后重新启用它们。看看这个问题。 TRUNCATE只是从表中删除数据并保留结构 我认为您不需要像这样处理转储文件。执行流转储/还原,并进行处理。就像是:
您将所有DELETE sql存储在delete-sensitive.sql中的位置。如果您不介意顾问使用CASCADE外键而不是RESTRICT外键获取数据库,则可以删除sanitizeddb数据库/步骤。 可能还有更好的方法,具体取决于您需要执行此操作的频率,数据库的大小以及敏感数据的百分比,但是我想不出一种简单的方法来对合理大小的数据库执行一次或两次数据库。毕竟,您将需要一个不同的数据库,因此,除非您已经拥有一个笨拙的集群,否则无法避免转储/恢复周期,这可能会很耗时。 @Tony:不,模式可能有用,实际上,我们使用它们来对数据库中的数据进行分区。但是我说的是在让顾问拥有数据库副本之前尝试清理敏感数据。我希望这些数据消失。 您可能想研究在PostgreSQL中使用模式。在过去的项目中,我已经这样做过,以允许不同的人群或开发人员拥有自己的数据。然后,您可以使用脚本为这种情况创建数据库的多个副本。 |
最新内容
相关内容
linux重新链接库命令?
linux重新链接库命令?,代码,软件,平台,产品,电脑,系统,入口,市场,工业,通信,linux下金仓数据库重启命令1、进入开始菜单-金仓数据库KingbaseESlinux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux链接远程命令?
linux链接远程命令?,系统,地址,网络,密码,软件,名称,工具,服务,电脑,认证,如何远程连接linux服务器步骤一:登录Linux服务器。打开Xshell,新建会linux命令行链接网络?
linux命令行链接网络?,网络,系统,地址,工作,工具,最新,网址,数据,信息,环境,linux怎么配置网络连接Linux 系统中,可以通过以下几种方法配置网络linux建立数据库命令?
linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服务,linux中在shell中怎么创建一个数据库1、以下的文章主要讲述的是linux命令进数据库?
linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,主机,linux系统mysql数据库怎么进入数据库首先确保linux下mysql安linux动态链接库命令?
linux动态链接库命令?,代码,项目,工程,电脑,网上,文件,程序,静态,命令,目录,如何在linux下写动态链接库并卖给别人1、执行qmake main.pro生成mlinux取消链接命令行?
linux取消链接命令行?,工具,状态,环境,数据,命令,文件,终端,模式,指令,界面,linux怎么退出命令行1、先按ESC进入Command模式,然后输入“:wq”,回linux数据库检查命令?
linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,在linux中,怎样查看Mysql服务运行状态?1、psaux或netstat-tlunppslinux命令进去数据库?
linux命令进去数据库?,地址,服务,名字,系统,数据库,工具,基础,工作,管理,网络,linux系统mysql数据库怎么进入数据库(linux进入mysql数据库命令linux数据库基础命令?
linux数据库基础命令?,地址,工作,基础,系统,命令,信息,情况,工具,设备,目录,linux下基本命令使用讲解对Linux操作系统进行维护操作的实用命令