Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsługa transakcji z poziomu PHP
Forum PHP.pl > Forum > Bazy danych > MySQL
ktuvok
Mam bazę MySQL w której dwie tabele - t1 i t2 powiązane są kluczem obcym.
Nie można dodać rekordu do tabeli t2, jeśli nie ma powiązanego z nim rekordu
w t1.

Wykonuję na bazie MySQL następujace operacje:
  1. <?php
  2.  
  3. $Operacja1 = &#092;"BEGIN;\";
  4. $Operacja2 = &#092;"INSERT INTO t1 (Pole) VALUES (5);\";
  5. $Operacja3 = &#092;"INSERT INTO t2 (Pole) VALUES (LAST_INSERT_ID());\";
  6.  
  7. $Wykonaj1 = mysql_query($Operacja1);
  8. $Wykonaj2 = mysql_query($Operacja2);
  9. $Wykonaj3 = mysql_query($Operacja3);
  10.  
  11. ?>


Dlaczego te operacje mogę przeprowadzić kolejno wpisując w konsoli mysql, a
w skypcie już nie? Otrzymuję komunikat:

"Cannot add a child row: a foreign key constraint fails"

A przecież LAST_INSERT_ID() wyraźnie wskazuje, jaką wartość należy wstawić!

questionmark.gif?
SongoQ
Hm troszeczke mylisz pojecia albo Cie nie zrozumialem.
Jesli masz tabele w relacji to wstawiasz id (klucza glownego) do pola klucza obcego tabeli 2.
ktuvok
To był przykład, być moze zbyt uproszczony... Do t2 wstawiam klucz wygenerowany z t1.
Kinool
jak usuniesz sredniki z konca to tez jest zle?
no i na koncu misisz zatwierdzic albo wycofac transakcje
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.