Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> LOCK TABLES wewnątrz transakcji
RAM
post 27.11.2010, 03:34:19
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Mephistofeles
post 27.11.2010, 10:07:05
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?
Go to the top of the page
+Quote Post
RAM
post 27.11.2010, 11:28:18
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?
Go to the top of the page
+Quote Post
Mephistofeles
post 27.11.2010, 12:37:45
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.
Go to the top of the page
+Quote Post
RAM
post 20.12.2010, 18:31:52
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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:50