sql - 如果外键的列设置为 false,Postgres 将删除一行

标签 sql postgresql sql-delete

我有这样的表 1:

模板表格:

ID              int    
Name            string 
TemplateGroupID int    

模板组表:

ID              int    
Name            string 
IsDefault       bool  

我想删除模板中的一行,如果该行的 FK 到 template_group 列 IsDefault 设置为 true。我怎样才能做到这一点?我以为是这样的:

delete from template 
where id =33 and exists (
    select * from template_group where is_default = true
);

但我认为这是不正确的,因为我不必在子选择中选择 TemplateGroupId 吗?

最佳答案

你可以使用 Postgres' delete ... from ... using ... where ... syntax :

delete 
from template t  
using template_group g 
where g.ID = t.TemplateGroupID and g.IsDefault = true

关于sql - 如果外键的列设置为 false,Postgres 将删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059915/

相关文章:

mysql - 如何在 MySQL 的函数中返回选择的结果?

MySQL - 当表 1 有新记录时,如何使用 MySQL 工作台在表 2 下创建子记录?

hibernate - HikariCP - 连接不可用

sql - CASE postgreSQL 中的 AND 语句引用类似条件

sql - 获取删除的记录数sql

tsql - T-SQL 删除插入的记录

sql - 语法问题 SQL Server。结合 Pivot、XML 解析和 JOIN

mysql - 如何按此顺序从 Mysql 检索结果?

sql - 在 PostgreSQL 中,列上可以有 "aliases"吗?

sql - 甲骨文 : How to delete duplicates rows when no distinct value exists?