Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ROZWIĄZANE - automatyczna Zmiana nazw kluczy obcych po zmianie nazwy klucza głównego, ROZWIĄZANE - silnik: InnoDB
darko
post
Post #1





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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


Ten post edytował darko 9.02.2010, 19:25:42


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




ON UPDATE CASCADE?
Go to the top of the page
+Quote Post
darko
post
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował darko 12.02.2010, 02:15:59


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 12:54