Delete pod warunkiem

0

Mam tabelę Towary: idTowaru, nazwaTowaru
oraz tabelę Zamówienia: idZam, idTowaru

Jak widać można zamówić jakiś towar w zamówieniu.

Chciałbym napisać zapytanie które usunie mi jakiś towar, którego podam id ale TYLKO wtedy gdy w żadnym zamówieniu ten towar nie występuje.
Normanie, nic trudnego, wystarczą 2 zapytania Select count[..] gdzie sprawdzamy ile jest rekordów w Zamówienia które mają przyporządkowane id konkretnego towaru i jak nie występuje to kolejne zapytanie delete tego towaru.

Ale.. w międzyczasie ktoś może dodać/usunąć rekord i nie zadziała to prawidłowo.
Można by to zrobić w ramach 1 transakcji, ale nie wiem jak by wyglądało takie zapytanie.

Wie ktoś jak mi pomóc? :)

0

Przepraszam, zapomniałem dodać prefiksu do tematu.. Problem dotyczy MySQL

0
delete from towary where idtowaru = @id and not exists(select idzam from zamowienia where idtowaru = @id)
0

Aha dzięki! :)
Czy w tak skonstruowanym zapytaniu mamy pewność, że delete nastąpi zaraz po select i nikt w międzyczasie nam nie doda żadnego rekordu?
Nie trzeba takiego zapytania wstawić do transakcji?
pzdr

0

To jest jedno zapytanie i powinno zostac potraktowane jako operacja atomowa.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.