Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DELETE z INNER - bezpieczeństwo drugiej tabeli
Forum PHP.pl > Forum > Bazy danych
lukasamd
Witam,
mam pewnie dosyć proste pytanie, bo wyczytałem że wszystko jest ok, testy potwierdzają, ale chcę mieć 100% pewności.
Chciałbym wykonać DELETE, jednak muszę dodatkowo użyć JOIN bo od drugiej tabeli zależy co będzie usuwane.

Przykład:
Kod
DELETE t1.* FROM tabela1 AS t1
INNER JOIN tabela2 AS t2 ON t1.poleX = t2.poleX
WHERE t1.poleY = 300 AND t2.poleZ IN (1,2,3,4,5)


poleX i poleY występują w obu tabelach, nazywają się tak samo.
Dane mają być usuwane tylko i wyłącznie z tabeli1, jednak w złączeniu z tabelą2 liczy się właśnie poleZ, gdzie jest zestaw w IN.

Sprawdzałem, wydaje się że wszystko gra, dane w tabela2 są nienaruszone, ale jak pisałem, chcę być w pełni pewny - czy takie coś nie zagraża danym z tabeli2?
Jak rozumiem, do usunięcia idzie tylko to co dokładnie podane (w moim wypadku t1.*), zaś złączenie nie ma tu znaczenia - jest wykorzystwane przy wyszukiwaniu danych do usunięcia, ale nie udziela się w samym usuwaniu.

Dobrze myślę, czy wymaga to korekty?
viking
Dobrze myślisz. O ile nie ma tam żadnych kluczy obcych, triggerów będzie Ci kasować tylko to co pokazałeś. Dla pewności przy testowaniu możesz to zawsze zamienić na select albo objąć blokiem transakcyjnym do rollbacka.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.