2011-12-16 12 views
12

Mam wiele tabel z ograniczeniami relacji. Tabele zawierają pełne dane fikcyjne, chciałbym skrócić/opróżnić dane z tabel przy zachowaniu struktury.Wyłącz tymczasowo więzy

Za każdym razem, gdy chcę opróżnić tabelę, otrzymuję błędy ograniczenia klucza obcego. Co mogę zrobić, aby tymczasowo wyłączyć to ograniczenie, a następnie ustawić je ponownie po usunięciu fałszywych danych.

Próbowałem tego rozwiązania, ale nie działało! Po wyłączeniu, a następnie spróbuj skrócić, otrzymuję błąd ograniczenia fk ...

//disable 
SET FOREIGN_KEY_CHECKS = 0; 


//enable 
SET FOREIGN_KEY_CHECKS = 1; 

Używam MySQL.

Każdy pomysł?

Odpowiedz

7

Musisz usunąć FK, jeśli chcesz użyć truncate, jako skróconą, a nie zalogowaną operację.

Może używać delete z FK w miejscu, ale usuwanie jest operacją zarejestrowaną i trwa dłużej.

+0

Dobra uwaga. Nie wiedziałem, że .... – user311509

3

Początek na końcu (tabele, które są tylko FK) i nie są przywoływane żadnymi innymi opowieściami. Te, które możesz obciąć. Następnie idź w górę i usuń. Jeśli skrócisz/usuniesz we właściwej kolejności, nie naruszysz tych ograniczeń. Lub możesz rzucić wszystkie konstelacje. Obetnij tabele. Następnie dodaj ponownie ograniczenia.

Powiązane problemy