我正在尝试根据他们的租赁日期从他们的表中删除一些成员。如果他们没有租用超过3年,他们可以被删除。我面临的问题是一些成员最近租了,这意味着查询仍然会拉起他们的 ID 并删除所有数据,因为他们的记录中有一个日期表明 DateOut 值大于 3 年。
delete from (select *
from rental
inner join member
on rental.member_id = member.member_id
inner join rental_line
on rental.rental_id = rental_line.rental_id
where months_between(sysdate, dateout) > ( 36 ));
delete from member
where exists(select dateout
from rental
where member.member_id = rental.member_id
and months_between(sysdate, rental.dateout) > ( 36 ));
这是我正在运行以删除数据的两个脚本,它首先从出租中拉出,它们是外键中的 ON CASCADE,它也从 Rental_Line 表中提取数据。然后第二个查询运行以自由地从成员表中删除数据,因为没有任何完整性问题,因为之前从链接表中删除了相应的数据。