Usunięcie rekordów z dwóch tabel powiązanych ze sobą [orcl]

0

Witam.

Mam dwie tabele, które powiązane są ze sobą 1 do 1. Chciałbym przy pomocy jednego polecenia usunąć wszystkie rekordy w obu tabelach od 1500 do końca. Mój pseudokod:

DELETE FROM tableA, tableB
WHERE tableAID > 1500 AND tableBID > 1500
2

Jeśli masz tabele połączone kluczem obcym to możesz w tej tabeli gdzie masz zdefiniowany klucz obcy dodać opcję ON DELETE CASCADE, co spowoduje że usuwając rekordy z tabeli od razu zostaną usunięte powiązane rekordy z drugiej tabeli. Ehh późno już mam nadzieję że w miarę się wysłowiłem.

1

wprowadzenie w tabeli klauzury on delete cascade do usuwania wierszy potomnych

create table tableA (
   tableAID number primary key
);

create table tableB (
   tableBID number, 
   foreign key (tableBID) references tableA(tableAID) on delete cascade
);

przykładowe wypełnienie tabeli

declare i number;
	
begin
i:=0;
for i in 1 .. 10000 loop
	
insert into tableA values 
(   i   );
end loop;
commit;
end;
/

usuniecie rekordów:

delete from tableA where tableA.tableAID>1500 

Sprawdzenie poprawności działania instrukcji delete

select * from tableb where tableb.tablebID>1500 order by tablebID asc

1 użytkowników online, w tym zalogowanych: 0, gości: 1