![]() ![]() |
| -lukasamd- |
Post
#1
|
|
Goście |
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? |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
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.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 15:10 |