Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ROZWIĄZANE - automatyczna Zmiana nazw kluczy obcych po zmianie nazwy klucza głównego
Forum PHP.pl > Forum > Bazy danych > MySQL
darko
Witam. Czy jest jakiś sposób, aby, zmieniając nazwę klucza głównego tabeli, będącego jednocześnie kluczem obcym dla innych tabel - zmieniłaby się automatycznie nazwa w relacji klucza obcego w tabelach, które są w relacji do tabeli, w której następuje zmiana nazwy klucza głównego? Na razie wygląda to tak, że, aby zmienić nazwę PK, muszę najpierw pousuwać relacje w tabelach skojarzonych, następnie dopiero wtedy mogę zmienić nazwę klucza głównego i na koniec muszę od nowa tworzyć relacje z odpowiednią (zmienioną) nazwą, co przysparza mi 5 razy więcej pracy niż początkowo zakładałem (ma do przeróbki ponad 50 tabel).

// edit
Ostatecznie rozwiąże to pisząc prosty skrypt zmieniający nazwy w eksporcie i zrobię ponowny import składni create.
// edit 2
Problem rozwiązałem pisząc prosty skrypt zmieniający nazwy kluczy w wyeksportowanej strukturze bazy
phpion
ON UPDATE CASCADE?
darko
Część tabel ma tak ustawione klucze obce, jednak część nie może (i ma NO ACTION), gdyż nie chcę, kiedy usunę np. wpis języka - usunąć wszystkich artykułów itd. więc rozwiązanie odpada... No nic, chyba jedynym wyjściem jest napisanie skryptu, który podmieni na odpowiednie nazwy kluczy w eksporcie (zrzucie) tabel i zrobienie ponownego importu.
// edit
zmiana wszędzie na on update cascade też nic nie dała (phpMyAdmin 2.11.8.1):

Cytat
ALTER TABLE `x` CHANGE `id_x` `id_a_x` INT( 11 ) NOT NULL AUTO_INCREMENT COMMENT 'PK'

MySQL zwrócił komunikat:
#1025 - Error on rename of './shop_x/#sql-a95_a2' to './shop_x/x' (errno: 150)

// edit 3
ON UPDATE CASCADE oczywiście zadziałałoby, gdybym miał pustą bazę, tymczasem miałem w niej dane. Mój błąd, mimo wszystko dzięki.
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.