Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przekazanie wartości z pola AI, do innej tabeli, lub generowanie unikalnego numeru
joka13
post 22.02.2010, 23:37:53
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 31.07.2009

Ostrzeżenie: (0%)
-----


Witam

Mam tabelę przesylka oraz status
W tabeli przesylka mam pole nr_przesylki, które jest jednocześnie kluczem głównym i auto increment.

W tabeli status mam pole nr_przesylki_status.

Jak zrobić, żeby do tabeli status w polu nr_przesylki_status wpisywała się wartość wygenerowana przez auto increment w tabeli przesyłka podczas dodawania nowej przesyłki?

Jest to niby proste - zwykła relacja, ale problem w tym, że pole nr_przesylki jest AI. W żaden sposób nie mogę sobie z tym poradzić.


Pomyślałem jeszcze, żeby pole nr_przesylki w tabeli przesyłka nie był AI (co byłoby bezpieczniejsze), ale jak zrobić żeby podczas tworzenia nowej przesyłki generował się unikalny numer złożony przynajmniej z 10 znaków (mogą być cyfry i litery, chociaż niekoniecznie).
Przyznam, że to byłoby najlepsze rozwiązanie, ale nie mam pomysłu jak zrobić, aby taki numer się generował.


Proszę o pomoc.
Dzięki
Go to the top of the page
+Quote Post
Mchl
post 23.02.2010, 08:16:16
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Sam musisz wstawić ten numer przy pomocy LAST_INSERT_ID()
Go to the top of the page
+Quote Post
joka13
post 23.02.2010, 09:36:10
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 31.07.2009

Ostrzeżenie: (0%)
-----


Nie znałem funkcji LAST_INSERT_ID(), a jakoś nie udało mi się jej wygooglować.

Mam jednak pytanie z nią związane... co się stanie, jeżeli dwie osoby równocześnie dodadzą nowa przesyłkę (oczywiście jest to mało prawdopodobne, ale należy założyć taki scenariusz) - czy może się tak stać, że przesyłka dodana jako przedostatnia, pobierze ID, przesyłki dodanej ostatnio?
Go to the top of the page
+Quote Post
Mchl
post 23.02.2010, 09:51:00
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Wszystko będzie dobrze smile.gif

http://dev.mysql.com/doc/refman/5.0/en/inf..._last-insert-id
Cytat
The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.


A nawiasem mówiąć, php ma mysql_insert_id (i odpowiednik w ext/myslqi)
Go to the top of the page
+Quote Post
joka13
post 23.02.2010, 09:57:06
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 31.07.2009

Ostrzeżenie: (0%)
-----


Dzięki wielkie za pomoc - problem rozwiązany.
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: 19.07.2025 - 19:49