![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 1 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich zainteresowanych problemem podejrzewam że nie tylko ja mam taki problem
Wysyłam do bazy danych dwa polecenia dodania danych do dwóch różnych tabel PIERWSZA ID_pierwsza|dane|dane|dane|dane DRUGA ID_druga|dane|dane|dane|ID_pierwsza zależy mi na tym aby id_pierwsza trafiło jako dane do drugiej tabeli czy można to zrobić za pomocą jakieś wbudowanej funkcji czy tez trzeba kombinować z procedurami i wyzwalaczami dziękuję za zaangażowanie i pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 14 Dołączył: 3.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 53 Dołączył: 18.09.2007 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
Wykoarzystaj pozdapytanie
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 1 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nh2003 nie wiem czy mysql_insert_id() jest dobrym pomysłem, załóżmy że mam więcej tabel i w każdej mam ID AUTO INCREMENT i do tego kilkaset użytkowników to wydaje mi się że jest taka możliwość że jakiś użytkownik się "wstrzeli" między insert do tabeli PIERWSZEJ i insert do tabeli DRUGIEJ i wtedy pobierze mu id niewłaściwy. Gdybym chciał np w niedalekim czasie przejść na id generowane ze znaków to mysql_insert_id() w ogóle odpada.
artur_dziocha możesz przybliżyć mi twój pomysł? Bardziej interesuje mnie procedura która w jakiś sposób przypisuje nowy id do zmiennej w w tej samej procedurze go wykorzystuje jeżeli jest coś takiego możliwe. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 53 Dołączył: 18.09.2007 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
Może coś taiego??
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 1 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
artur_dziocha na początek może być taka konstrukcja, nawet mam gdzieś podobną w innym miejscu
a może by spróbować czegoś takiego
nie znam się tak bardzo na MySQL aby samemu sobie z tym poradzić a jeżeli ktoś wie że jest to niemożliwe w ten sposób to proszę mnie uświadomić (IMG:style_emoticons/default/smile.gif) pozdrawiam |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
@acainoks, wydaje mi się że tak właśnie nie jest, że można się wstrzelić pomiędzy zapytania jednego usera. W sumie nie wiem, ja stosuje mysql_insert_id() + transakcja oczywiście i problemów nie mam. Wydaje mi się, że przy transakcji takie coś nie jest możliwe, bo zapytania wykonują się zaraz po sobie...
Ja bym polecał mysql_insert_id + transakcja |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Nh2003 nie wiem czy mysql_insert_id() jest dobrym pomysłem, załóżmy że mam więcej tabel i w każdej mam ID AUTO INCREMENT i do tego kilkaset użytkowników to wydaje mi się że jest taka możliwość że jakiś użytkownik się "wstrzeli" między insert do tabeli PIERWSZEJ i insert do tabeli DRUGIEJ i wtedy pobierze mu id niewłaściwy. Gdybym chciał np w niedalekim czasie przejść na id generowane ze znaków to mysql_insert_id() w ogóle odpada. Nie ma takiej możliwości. Inaczej ta funkcja byłaby całkowicie bezużyteczna. Ostatnio wstawiony ID jest przechowywany dla każdego połączenia osobno i nie ma możliwości żeby dwóch różnych użytkowników pomieszało sobie nawzajem. Tutaj dokładne objeaśnienie jak działa ta funkcja http://dev.mysql.com/doc/refman/5.1/en/inf..._last-insert-id A po co miałbyś przechodzić na id generowane ze znaków? To znaczy wiem, że są ludzie którzy lubią utrudniać sobie życie, ale jestem ciekaw motywu. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 10 Dołączył: 8.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
LAST_INSERT_ID to dobry pomysł, ale trzeba wszystko zrealizować w warstwie bazodanowej:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego 'trzeba'?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 1 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jestem już przekonany do auto increment, bo w sumie po co sobie utrudniać tylko interesuje mnie jeszcze kwestia dwóch ostatnich postów czyli warstwy bazodanowej trzeba czy nie trzeba?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Nie trzeba. Ani w bazie danych, ani w transakcji (aczkolwiek czasami trzeba w transakcji z innych powodów).
Warto poczytać link który wstawiłem powyżej, bo wyjaśnia wiele wątpliwości (na przykład co zwróci LAST_INSERT_ID() po wielowierszowym insercie). Ten post edytował Mchl 9.07.2010, 23:32:49 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 03:07 |