Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xóa các hàng khỏi bảng mẹ và bảng con

Hai cách tiếp cận khả thi.

  1. Nếu bạn có khóa ngoại, hãy khai báo khóa đó dưới dạng khi xóa và xóa các hàng mẹ cũ hơn 30 ngày. Tất cả các hàng con sẽ tự động bị xóa.

  2. Dựa trên mô tả của bạn, có vẻ như bạn biết các hàng mẹ mà bạn muốn xóa và cần xóa các hàng con tương ứng. Bạn đã thử SQL như thế này chưa?

      delete from child_table
          where parent_id in (
               select parent_id from parent_table
                    where updd_tms != (sysdate-30)
    

    - bây giờ xóa các bản ghi bảng mẹ

    delete from parent_table
    where updd_tms != (sysdate-30);
    

---- Dựa trên yêu cầu của bạn, có vẻ như bạn có thể phải sử dụng PL / SQL. Tôi sẽ xem liệu ai đó có thể đăng một giải pháp SQL thuần túy cho vấn đề này hay không (trong trường hợp đó, đó chắc chắn sẽ là cách tốt nhất).

declare
    v_sqlcode number;
    PRAGMA EXCEPTION_INIT(foreign_key_violated, -02291);
begin
    for v_rec in (select parent_id, child id from child_table
                         where updd_tms != (sysdate-30) ) loop

    -- delete the children
    delete from child_table where child_id = v_rec.child_id;

    -- delete the parent. If we get foreign key violation, 
    -- stop this step and continue the loop
    begin
       delete from parent_table
          where parent_id = v_rec.parent_id;
    exception
       when foreign_key_violated
         then null;
    end;
 end loop;
end;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để kết nối giữa cơ sở dữ liệu android và oracle là gì?

  2. Oracle - Làm cách nào để lấy kích thước thực của ROW cụ thể?

  3. Trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong Oracle

  4. ORACLE Cách sử dụng ống chỉ với vị trí ống chỉ động

  5. Phân trang với Oracle