ďťż

[SQL] Problem z zapytaniem

       

Podstrony


telcocafe

Witam.

Mam strukturę tabel na taki wzór:
tabela A:
id autoincrement
inne pola

tabela B:
id z A
inne pola

Muszę dodać 2 rekordy:
w tabeli A
i w tabeli B, z tym, że "id z A" musi zawierać w sobie id rekordu, który został właśnie dodany.



Dodajesz A, a po tym dodajesz do B bazując na danych z A ;)

a jeśli między którymś z tych kroków ktoś inny doda rekord? To przypiszę nie do tego.

Jeśli dobrze rozumiem, chcesz pobrać ID ostatniego rekordu. Poczytaj dokumentację PHP.$id = $db->lastInsertId(); //gdy używasz PDO $id = $db->insert_id; //gdy używasz MySQLi
Możesz także objąć zapytania transakcją. :)
Użytkownik Ferrari edytował ten post 11 listopad 2009, 18:18



a jeśli między którymś z tych kroków ktoś inny doda rekord? To przypiszę nie do tego.
Możesz zablokować pierwszą tabelę do zapisu zanim nie zapiszesz wiersza w drugiej, lub też np. pobrać rekord po unikalnym zbiorze dodatkowych danych użytych w insercie. Jeżeli wykonujesz zapytania zaraz po sobie bez wykonywania wielu innych czynności to istnieje bardzo niewielka szansa że dojdzie kolejny wiersz. (no chyba że to aplikacja z bardzo dużą ilością napływających danych).

Riklaunim, myślałem nad blokadą tabeli, ale może to potem powodować dziwne konsekwencje, a ponieważ projekt ma być poważny, to wolę nie ryzykować.
Nad transakcjami myślałem, ale szkoda się aż tak wysilać :D

Tego kodu z insert_id nie znałem, a to właśnie był strzał w 10.

Dzięki.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.