Usuwanie danych z wielu tabel

0

Witam posiadam w bazie danych dwie tabele "persons" i "domeins". Tabele są połączone ze sobą "id_person". Chciałbym jedną komendą usunąć wszystkie rekordy w tych dwóch tabelach które mają taki sam "id_person"

0

Wg mnie tablica in-memory, wpisać do niej id_person (ewentualnie id z obu tabel), po czym dwa razy delete. i drop tablicy.
Lub dodać do tablic pola NeedDelete.
nie zauważyłem że jedna z tablic person

1

To zależy od silnika którgo uzywasz, w mysql możesz tak:

DELETE persons,domeins
FROM persons
INNER JOIN domeins on domeins.id_person=persons.id_person

W sql server sie nie da, mozna to wymusic przez ustawienie cascading deletes

0

Teraz mnie tknęło, praktycznie aby zrobić to jedną komendą możesz napisać 2 zapytania delete opakować w procedurę i wykonać 1 komendą

Dla SQL Server

exec procedurausuwającaztabel
0

Klucz obcy "ON DELETE CASCADE" i usuwamy z nadrzednej... :)

0
inomi13 napisał(a):

Witam posiadam w bazie danych dwie tabele "persons" i "domeins". Tabele są połączone ze sobą "id_person". Chciałbym jedną komendą usunąć wszystkie rekordy w tych dwóch tabelach które mają taki sam "id_person"

Podaj jakieś uzasadnienie takiego działania.

Zarówno rozwiązanie @_13th_Dragon jak i @Panczo są nieczytelne a dodatkowo opakowanie tego w stored proc i wywołanie przez exec to dodatkowy narzut czasowy na wykonanie. Jedyne sensowne rozwiązanie to poprawne ustawienie klucza obcego i usunięcie rekordów z tabeli głównej. Jeśli jednak pole FK może być nullem to te rekordy nie zostaną usunięte.

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