Szukam sposobu na tymczasowe wyłączenie wszystkich ograniczeń DB (np. Relacji między tabelami).
Muszę skopiować (używając INSERT) tabele jednego DB do innego DB. Wiem, że mogę to osiągnąć, wykonując polecenia w odpowiedniej kolejności (aby nie zerwać relacji).
Byłoby jednak łatwiej, gdybym mógł tymczasowo wyłączyć sprawdzanie ograniczeń i włączyć go ponownie po zakończeniu operacji.
czy to możliwe?
sql-server
isql-server-2005
. Link, który podałem, dotyczy programu SQL Server, ale możesz zrobić to samo w Oracle - patrz tutaj i tutaj . Możesz to również zrobić w PostgreSQL .Odpowiedzi:
Możesz wyłączyć ograniczenia FK i CHECK
tylko w SQL 2005+. Zobacz ZMIENIĆ TABELĘlub
Klucze podstawowe i unikalne ograniczenia nie mogą być wyłączone, ale powinno być OK, jeśli dobrze cię zrozumiałem.
źródło
źródło
check check
którym zapomina wielu ludzi !!A jeśli chcesz sprawdzić, czy NIE ZŁOŻYŁEŚ swoich związków i nie wprowadziłeś sierot, po ponownym uzbrojeniu czeków, tj.
lub
możesz ponownie uruchomić się i wykonać aktualizację w przypadku zaznaczonych kolumn, takich jak:
A wszelkie błędy w tym punkcie będą spowodowane brakiem spełnienia ograniczeń.
źródło
Możesz faktycznie wyłączyć wszystkie ograniczenia bazy danych w jednym poleceniu SQL i ponownie włączyć je, wywołując inne pojedyncze polecenie. Widzieć:
Obecnie pracuję z SQL Server 2005, ale jestem prawie pewien, że to podejście zadziałało również z SQL 2000
źródło
Wyłączanie i włączanie wszystkich kluczy obcych
zobacz Wyłączanie ograniczeń i wyzwalaczy z MSDN Magazine
źródło