sql - 为什么我的级联删除在 PostgreSQL 中不起作用?
问题描述
我正在尝试在 PostgreSQL 中配置级联删除并创建了这两个表:
CREATE TABLE "public"."User" (
id SERIAL PRIMARY KEY,
name TEXT
);
CREATE TABLE "public"."Post" (
id SERIAL PRIMARY KEY,
title TEXT,
author INTEGER,
FOREIGN KEY (author) REFERENCES "public"."User" (id) ON DELETE CASCADE
);
现在,在创建了两个相关记录之后
INSERT INTO "public"."User"("name") VALUES('Alice') RETURNING "id", "name";
INSERT INTO "public"."AnotherPost"("title", "author") VALUES('Hello World', 1) RETURNING "id", "title", "author";
我希望在删除Post
记录时,相应的User
记录会被删除。
DELETE FROM "public"."Post" WHERE "id"=1;
但是,User
我创建的记录仍然存在。有人可以告诉我我缺少什么或为什么这不起作用吗?
解决方案
外on delete cascade
键的工作方式相反。即,如果您删除用户,其帖子也会被删除。
推荐阅读
- reactjs - 谁可以在 React Final Form 中访问向导页面中的值?
- jenkins - 在两个不同的 Jenkinsfile/Groovys 脚本中使用相同的代理
- sql - 如何在 Microsoft SQL Server Management Studio 中将多行合并为一行,用逗号分隔
- python-3.x - 如何在 jupyter notebook 中查看用户定义函数的详细信息?
- flutter - 在前台隐藏颤振本地通知
- magento - Magento 2.4.2 在 laminas-http 模块 GenericHeader.php 中检测到无效的标头值
- javascript - 具有多个实例的 Slick Carousel 因无限宽度而变得疯狂(除其他外)
- javascript - Vue Formulate// 有没有办法恢复模式中的 isLoading 属性?
- odata - OData 使用过滤器选择单个实体
- mongodb - mongodb $each 修饰符如何与“复杂”对象一起使用