![]() |
![]() |
-Code46- |
![]()
Post
#1
|
Goście ![]() |
Witam!
Wkońcu natrafiłem na problem dotyczący kasowania danych z bazy mysql. Temat dotyczy bardziej bazy niż php ale mam nadzieję, że mi pomożecie.. Mam kilka tabel. Kasując informacje z jednej, muszę usunąć odpowiednie dane z innych tabeli. Wiem, że instrukcji DELETE nie można użyć tak jak select. Dla każdej tabeli należy wywołać osobno instukcję DELETE. Poczytałem sobi o trancakcjach i blokowaniu ale nie wiem jak to zastosować w praktyce. Chodzi mi o to, że gdy skasuję z tablei kont użytkownika, a z drugiej tabeli (tam gdzie mam dane o użytkownikach) nie uda się skaować odpowiedniego wpisu (np z nieznanych przyczyn) to tabelę z kontami doprowadzę do stanu z przed wykonani instrukcji DELETE, po to aby baza się nie posypała. Jak to zrobić? |
|
|
![]() |
-Guest- |
![]()
Post
#2
|
Goście ![]() |
Cytat(SongoQ @ 2005-04-17 14:12:27) Mozna to zrealizowac na 2 sposoby. 1. Tabela typu INNO DB i pomiedzy tabelami sa zrobione relacje, za DELETE zakladasz CASCADE, powoduje to ze jesli usuniesz rekord gdzie jego klucz podstawowy jest kluczem obcym w innej tabeli to sie odrazu usuwa rekord powiazany. Mysle ze zrozumiales o co chodzi. 2. Transaction. Oczywiscie rowniez tabela typu INNO DB. - Przed usunieciem rekordow startujesz transakcje: mysql_query('BEGIN', $szConnection); nastpnie usuwasz rekordy, sprawdzasz czy funkcje mysql_query zwrocila true, jesli zwroci usuwasz kolejne rekordy, jesli zwroci false wycofujesz transakcje mysql_query('ROLLBACK', $szConnection); Jesli na koncu wszystko jest ok to zatwierdzasz: mysql_query('COMMIT', $szConnection); Jesli cos poszlo nie tak to oczywiscie mozesz wycofac Co to jest ta tabela typu INNO DB? I kiedy stosować taki sposób? Tylko przy usuwaniu? Czy może też przy UPDATE? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 11:13 |