Sql 如何从传递给另一个表的条件的表中删除值

Sql 如何从传递给另一个表的条件的表中删除值,sql,database,postgresql,Sql,Database,Postgresql,我面临着这个问题: 我有一个名为pins的表,它存储了地图上关于pin的信息,包括它们的ID、插入它们的用户的ID、其他信息以及插入它们的时间。 我还有一个名为evaluation的表,它只存储他们的ID和插入ID的用户的ID 在我的postgres函数中,我将删除在最近30分钟内按照以下指令插入的所有管脚: 从pin_hour要定义级联外键约束的pin中删除: alter table evaluations add constraint fk_evaluations_pin forei

我面临着这个问题:

我有一个名为
pins
的表,它存储了地图上关于pin的信息,包括它们的ID、插入它们的用户的ID、其他信息以及插入它们的时间。 我还有一个名为
evaluation
的表,它只存储他们的ID和插入ID的用户的ID

在我的postgres函数中,我将删除在最近30分钟内按照以下指令插入的所有管脚:
从pin_hour要定义级联外键约束的pin中删除:

alter table evaluations add constraint fk_evaluations_pin
    foreign key (pin_id) references pins (pid_id)
    on delete cascade;
如果无法执行此操作,还可以使用
returning
从同一查询中的两个表中删除:

with d as (
      delete from pins
          where pin_hour <= localtime - interval '30 minute'
          returning *
     )
delete from evaluations
    where pin_id in (select pin_id from d);
,其中d为(
从PIN中删除

如果我从
pins
表中删除它们,它将从
evaluations
表中删除?@Enguias…这就是级联删除外键约束的工作方式。