PostgreSQL:删除一行以及其他表中所有的引用(FK)吗?

问题描述 投票:0回答:1

假设我有一个名为“ users”的表,如下所示:

+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
| 1  | 'Sid'      | 'Barrett' |
| 2  | 'Roger'    | 'Waters'  |
| 3  | 'Richard'  | 'Wright'  |
| 4  | 'David'    | 'Gilmour' |
| 5  | 'Nick'     | 'Mason'   |
+----+------------+-----------+

每个“用户”在与FK相同列名“ user_id”的多个表上具有大量引用。如果我需要删除一个元素,我相信过程是先删除关系(以避免“违反外键约束”错误),然后再删除“用户”表中的元素本身,对吗?

但是...是否有可能删除所有其他表上带有其所有引用的“ user”元素?我正在使用NodeJS(Express)并使用PostgreSQL。如果答案很明显,请道歉,我是SQL的新手。 非常感谢指教!!

sql database postgresql sql-delete cascading-deletes
1个回答
0
投票

是,使用外键上的on delete cascade

on delete cascade

现在删除用户时,所有与之相关的帖子也将被删除。

例如,如果帖子中有评论,此操作将会继续...

create table users (
  id bigserial primary key
  ...
);

create table posts (
  ...
  user_id bigint not null references users on delete cascade
  ...
)

[删除用户后,他们的帖子将被删除,这些帖子的评论也将被删除。这是“层叠”部分。

© www.soinside.com 2019 - 2024. All rights reserved.