Update kolumny relacji (foreign key)

0

Jak update'ować w MySQL zawartość kolumnę Primary Key w danej tabeli która jest w drugiej tabeli Foreign Key'em relacji?
Chcę zmienić wpis w pewnych polach tej kolumny (varchar()) ale to że są one używane przez drugą tabelę powoduje blokowanie operacji Update.

0

To zależy, czy akcja jest jednorazowa, czy też ma to być "ficzer". Ale generalnie to takich rzeczy się nie robi. Nie po to zaklada się PK i FK, by potem te wartości zmieniać.
Ale jest na to rozwiązanie. (oczywiście zakładając, że jest to akcja jednorazowa i masz odpowiednie ku temu prawa):

  1. do tymczasowej tabeli przekopiowujemy rekordy z tabeli powiązanej FK, usuwamy je w tej tabeli, zmieniamy PK i w tabeli tymczasowej również, a potem przekopiowujemy do tabeli powiązanej FK;
  2. na czas zmiany PK i Fk usuwamy FK
  3. UPDATUjemy za jednym razem w obuu tabelach (ale to nie jestem pewien, czy zadziała).
0

Dzięki. Tak myślałem że trzeba będzie skorzystać z jakiejś pomocniczej tabeli. Ale chyba najłatwiej byłoby na chwile usunąć Contsraint związany z zależnością Foreign Key. Tylko nie wiem jak znaleźć nazwę tego Constraint (przez jakie polecenie) bo nie ja robiłem ta tabelę a twórca mógł nawet nie zdefiniować własnej nazwy Constarint dla tej relacji z FK.

0

FOREIGN_KEY_CHECKS można też dropnąć FK i dodać jeszcze raz po operacji.

0

FK można znaleźć w prosty sposób:
SELECT * FROM information_schema.key_column_usage

W polu TABLE_NAME można odnaleźć tabelę na której jest FK.

0

Dzięki.
Nie bardzo rozumiem tylko podpowiedzi FOREIGN_KEY_CHECKS ...

0
SET FOREIGN_KEY_CHECKS = 0;
0

Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1