![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzień dobry,
Moja witryna w PHP5+MySQL składa się zasadniczo z trzech stron: 1. enter_announcement.php - wprowadzanie/edycja ogłoszenia 2. submit_announcement.php - dodanie/modyfikacja ogłoszenia w bazie 3. summary.php - wyświetlenie podsumowania. Dokładniej rozwiązanie działa tak, że strona enter_announcement.php na submicie ma stronę submit_announcement.php, która na koniec dopiero wywołuje summary.php. Numer ogłoszenia składa się z trzech części: rok, miesiąc, numer w miesiącu. Oto szkic submit_announcement.php: START TRANSACTION LOCK TABLES announcements WRITE if (empty($_POST['full_announcement_no'])) { // nowe ogłoszenie $announcement = new Announcement; $announcement->initializeWithPOST(); INSERT INTO announcements z nowym numerem MAX+1 } else { // modyfikacja ogłoszenia $announcement = new Announcement; $announcement->initializeWithPOST(); $announcement->initializeWithNumber($_POST['full_announcement_no'])); UPDATE announcements } UNLOCK TABLES COMMIT header('Location: summary.php'); Problem w tym, że nie jestem pewien czy wewnątrz transakcji instrukcja LOCK TABLES jest potrzebna. Tabele blokuje ze względu na współbieżność generowania numerów ogłoszeń (SELECT MAX(no)+1 FROM announcements WHERE year=bieżący AND month=bieżący). Byłbym wdzięczny za informację, czy wewnątrz tranakcji lokowanie jest potrzebne. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Po co transakcja do jednej operacji na bazie?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ściśle rzecz biorąc operacji jest więcej (np. dodawanie uploadowanych obrazków do tabeli pictures), a ja podałem tylko to co istotne.
Możesz mi odpowiedzieć na moje pytanie? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Używa się albo transakcji, albo blokowania, transakcja wystarczy. Aczkolwiek dobrze by było, żeby wypowiedział się ktoś jeszcze, bo nie jestem o tym jednak do końca przekonany.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czy ktoś mógłby mi pomóc?
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 00:50 |