![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 15.04.2003 Skąd: Tczew Ostrzeżenie: (10%) ![]() ![]() |
Witam
Robię dziennik korespondencji i natrafiłem na takowy problem: Dokument jest rejestrowany i jest mu nadawany numer. Numer ma taką postać kolejny_numer/rok Problem polega na tym że jeżeli zrobię dwa oddzielne pola "nr" i "rok" to php muszę wykonać dwa zapytania Pierwsze [sql:1:f31dd17b09] SELECT MAX(nr) FROM tabele WHERE rok=aktualny_rok[/sql:1:f31dd17b09] i pobranie "nr" jako zmiennej a następnie drugie zapytanie które bedzie dodawało rekord. Obawiam się, że jeżeli bedzie pracowało kilkadziesiąt osób to może dojść do błędów i będa się powtarzać numery. Z kolei jeżeli zrobię jedno pole, w którym bedzie taki wpis "kolejny_numer/rok" to jak ustawić MySQLa aby utomatycznie zmieniał "kolejny_numer" a rok wstawiał aktualny. Może są inne sposoby jak to zrobić, ale ja nie mam pojęcia jak. Z góry dzięki za wszelkie podpowiedzi, przykłady i rozwiązania |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Chorzow Ostrzeżenie: (0%) ![]() ![]() |
Witamy wszystkich w temacie transakcje lub blokowanie tabel.
Blokownie tabel jets banalne: LOCK TABLE faktury, mieszamy na fakturach, UNLOCK TABLE i mozemy spac spokojnie. Transakcje sa troche trudniejsze. Po pierwsze baza/tabela musi wspierac transackje (czytaj: jesli MySQL to tabela musi byc InnoDB lub inna transakcyjna). Potem leci tak: ustwiasz transakcej na poziom serializable, robisz select najwyzszego wiersza dodajac na koncu zapytania FOR UPDATE (co lokuje wiersz), mieszasz na pobranych danych, i wstawiasz je insertem, po czym konczysz transakcje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 05:19 |