Code And Glory – web developer
Sztuczki i skuteczne rozwiązania dla PHP, MySQL, CSS, HTML, JavaScript.

gru/09

17

MySQL: Ignorowanie kluczy obcych podczas usuwania rekordu

Jeżeli nasza baza danych ma wiele tabel, które mają zdefiniowane klucze obce i trafi się sytuacja, że będziemy musieli usunąć jeden z rekordów z powiązanych tabel to otrzymamy komunikat o wystąpieniu błędu (kod #1451):

#1451: Cannot delete or update a parent row: a foreign key constraint fails [...]

Oznacza to, że w innej tabeli znajduje się rekord, który jest powiązany z rekordem, który chcemy usunąć. W tym wypadku prawidłowym działaniem jest usuwanie rekordów po kolei od tych leżących najniżej w „hierarchii”. Natomiast, jeżeli nie zależy nam na zachowaniu spójności wystarczy przed usunięciem rekordu wykonać zapytanie:

SET foreign_key_checks = 0;

Dzięki temu MySQL otrzyma informację, żeby nie sprawdzać kluczy obcych podczas wykonywania operacji na bazie i będziemy mogli bez trudu usunąć pożądany rekord. Aby jednak przypadkiem nie doprowadzić do większych problemów po wykonaniu usuwania należy wykonać zapytanie, które ponownie włączy weryfikację kluczy obcych:

SET foreign_key_checks = 1;

RSS Feed

Brak komentarzy.

Dodaj komentarz!

<<

>>

 

Grudzień 2009
P W Ś C P S N
« paź   sty »
 123456
78910111213
14151617181920
21222324252627
28293031  

Theme Design by devolux.org