Kod
forum_toc (tabel z informacjami o poście)
id | var1 | var2 | var3... itd
------------------------
| | |
forum_text (tabela z treścią posta)
id | tresc |
------------
| |
id | var1 | var2 | var3... itd
------------------------
| | |
forum_text (tabela z treścią posta)
id | tresc |
------------
| |
Problem pojawia się w zapisie nowego postu, nowe ID pobierane jest poprzez wywołanie do bazy danych, pobraniu najwyższego ID z forum_toc i zwiększenie go o 1. Następnie nowe dane są umieszczane w tabeli poprzez wywołane 2 razy funkcje INSERT (po jednej dla kazdej tabeli). Tabele nie mają ani indexu, ani auto_increment (żeby nie było ewentualnych problemów z ID).
Jeżeli teraz jednocześnie 2 uzytkowników wpisuje coś na forum to nieraz zdarza się tak, że jeden użytkownik nadpisuje forum_text drugiemu użytkownikowi (wpisy w forum_toc są poprawne, a na forum_text jest wpisane 2 razy to samo...). Moje forum jest dosyć często odwiedzane i co jakiś czas wyskakują właśnie takie kwiatki.
JAK ZROBIĆ, ŻEBY W JEDNYM WYWOŁANIU WPISAĆ DANE W OBYDWIE TABELE (wtedy pozbyłbym się tego problemu)? Ale w sumie problem pewnie też tkwi w pobieranym wcześniej ID... miedzy pobraniem tedo MAX ID a wpisaniem do bazy dancyh wykonywany jest jeszcze jakiś kod...
LUB JAK POŁĄCZYĆ TE 2 TABELE W JEDNĄ.
Niestety nie jest to takie łatwe, ponieważ skrypt cały czas działa i w tabelach jest po około 20 000 rekordów (forum_toc zajmuje 1 MB, forum_text zajmuje 15 MB). Napisałem ten poniższy kod, ale w ciągu 30 sekund przekopiowało tylko 301 postów

<?php } ?>
Opis do forum_toc kolumnę post_tresc i na podstawie ID miały być kopiowane wpisy z jednej tabeli do drugiej... niestety jak już pisałem, to ma za małą wydajność...
Czy ktoś wie, jak połączyć 2 tabele z taką ilością danych w jedną tabelę.
-------------------------------------
UZYWAJ BBCodeu
Seth