sql - 删除行以及引用行 ID 的行

标签 sql postgresql

假设我们有一张绘图表。

CREATE TABLE public.drawings
(
  drawingid integer NOT NULL DEFAULT nextval('drawings_drawingid_seq'::regclass),
  name text,
  discipline text,
  type text,
  CONSTRAINT drawings_pkey PRIMARY KEY (drawingid)
);

我们有一个修订表,存储每张图纸的所有修订数据。

CREATE TABLE public.revisions
(
  revisionid integer NOT NULL DEFAULT nextval('revisions_revisionid_seq'::regclass),
  drawingid integer,
  sequence integer,
  revision text,
  state text,
  meta jsonb,
  "Description" text,
  "TB_DRAWING_NO" text,
  "File Name" text,
  "ATT_CADTYPE" text,
  "PW_SUITABILITY" text,
  "TB_TITLE_LINE_1" text,
  "TB_TITLE_LINE_2" text,
  "TB_TITLE_LINE_3" text,
  "TB_TITLE_LINE_4" text,
  --snip
  "RV_APPDATE10" timestamp without time zone,
  "RV_APPDATE11" timestamp without time zone,
  "RV_APPDATE12" timestamp without time zone,
  "File Updated" timestamp without time zone,
  "Updated" timestamp without time zone,
  "Created" timestamp without time zone,
  "File Updated By" text,
  "Updated By" text,
  "Created By" text,
  CONSTRAINT revisions_pkey PRIMARY KEY (revisionid),
  CONSTRAINT revisions_drawingid_fkey FOREIGN KEY (drawingid)
      REFERENCES public.drawings (drawingid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

假设我想从drawings表中删除很多行,但我也想从revisions中删除相关修订,我不想离开孤立行。最有效的方法是什么?

最佳答案

要实现这一点,您可以在定义约束时使用 PostgreSQL 中的 CASCADE 关键字:

CONSTRAINT revisions_drawingid_fkey FOREIGN KEY (drawingid)
    REFERENCES public.drawings (drawingid) MATCH SIMPLE
    ON UPDATE NO ACTION ON DELETE CASCADE

现在,当删除绘图中的行时,它将自动删除修订中的孤立行。

Working SQLFiddle .

关于sql - 删除行以及引用行 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56235342/

相关文章:

Mysql如何根据优先级进行选择

sql - TRIGGER BEFORE DELETE,不删除表中的数据

php - Mysql 内连接/一个查询中的多个选择?

mySQL 插入与选择

ruby-on-rails - 使用 PG 进行 ROR

ruby-on-rails - 使用 'gem pq' 安装 PostgreSQL gem 失败并出现错误 : Failed to build gem native extension

sql - 如果任何源列为真,则将 bool 值聚合为真

mysql - MYSQL中无法写入 'find the products with at least such features'

java - 表重复值

performance - Postgres 全文搜索性能问题