orders表为主表、order_items表为子表,它们通过order_id进行外键关联;
Oracle中为什么delete from (select * from orders o,order_items i where o.order_id=i.order_id)只删除了子表order_items中的记录?
换成delete from (select * from order_items i,orders o where i.order_id=o.order_id)也是一样的只删除了order_items中的记录
我也是搞了5、6年了,测试了一下,delete只能删除单表或具有主外键关联的连接查询所构造的显式视图或匿名视图,并且只会删除该连接查询中的最下一级的子表中满足条件的记录,也就是:假如T1是主表,T2是T1的子表,而T3又是T2的子表,如果Delete这三张表的主外键连接查询,只会删除T3中的记录。