![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 5 Dołączył: 14.10.2008 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam problem z stworzeniem zapytania do bazy danych, który mógłby obsłużyć taką transakcję: - dodaję zamówienie do bazy danych (data złożenia, kto etc etc) - dodaję pozycje, które były w tym zamówieniu (każda pozycja musi mieć numer zamówienia, które wcześniej dodałem). w związku z tym moje pytanie brzmi: jak skonstruować transakcję, tak aby nie było problemu z dodaniem numeru id zamówienia do pozycji tegoż zamówienia, które są w innej tabeli? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 5 Dołączył: 14.10.2008 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Tak myślałem, ale co, jeśli pomiędzy dodaniem zamówienia a pobraniem ostatniego zamówienia zostanie dodane inne zamówienie? Wtedy pobrane id ostatniego zamówienia nie będzie tym, do którego mają być przypisane pozycje...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 16 Dołączył: 24.07.2009 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Tak myślałem, ale co, jeśli pomiędzy dodaniem zamówienia a pobraniem ostatniego zamówienia zostanie dodane inne zamówienie? Wtedy pobrane id ostatniego zamówienia nie będzie tym, do którego mają być przypisane pozycje... Witam, Tak naprawdę zależy to od tego jaki wybierzesz poziom izolacji transakcji. INNODB w MySQL wspiera wszystkie poziomy, więc może nastąpić tzw. DIRTY READ. Jednak domyślne ustawenia (REPEATABLE READ) pozwalają Ci się tym nie martiwć - będzie tak jak pisał zzeus. Więcej info o poziomach izolacji w mysql znajdziesz np. tutaj - żródło po angielsku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 18:33 |