Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wyłączyć wszystkie ograniczenia wyboru i klucza obcego dla tabeli w programie SQL Server (przykłady T-SQL)

Możesz użyć poniższego kodu, aby wyłączyć wszystkie CHECK i ograniczenia klucza obcego dla określonej tabeli w SQL Server.

Wystarczy zastąpić TableName z nazwą odpowiedniej tabeli.

ALTER TABLE NazwaTabeli NOCHECK CONSTRAINT ALL

Poniżej znajduje się przykład, w którym to robię, a następnie sprawdzam wynik.

Przykład 1 – Przejrzyj ograniczenia

Najpierw rzucę okiem na bieżące CHECK i ograniczenia klucza obcego w bazie danych, aby sprawdzić, czy są włączone lub wyłączone.

SELECT OBJECT_NAME(parent_object_id) AS 'Tabela', nazwa AS 'Ograniczenie', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraints; 

Wynik:

+----------------+-----------------+---------------- ----+------------------+| Tabela | Ograniczenie | is_disabled | nie jest_zaufany ||----------------+-----------------+------------- ---+------------------|| Test Ograniczeń | chkCena | 0 | 0 || Test Ograniczeń | chkValidEndDate | 0 | 0 || Test Ograniczeń | chkTeamSize | 0 | 0 || Zawód | chkTytułZadania | 0 | 0 |+----------------+-----------------+------------ ---+------------------+

Tak więc obecnie są cztery CHECK ograniczenia w bazie danych, z których trzy dotyczą ConstraintTest tabela.

Widzimy, że wszystkie ograniczenia są włączone, ponieważ jest_wyłączone jest ustawiony na 0 .

Przykład 2 – Wyłącz ograniczenia

Teraz wyłączę wszystkie ograniczenia dla ConstraintTest tabela:

ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;

Przykład 3 – Sprawdź wynik

Teraz uruchamiam to samo zapytanie z pierwszego przykładu, aby zobaczyć wynik.

SELECT OBJECT_NAME(parent_object_id) AS 'Tabela', nazwa AS 'Ograniczenie', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraints; 

Wynik:

+----------------+-----------------+---------------- ----+------------------+| Tabela | Ograniczenie | is_disabled | nie jest_zaufany ||----------------+-----------------+------------- ---+------------------|| Test Ograniczeń | chkCena | 1 | 1 || Test Ograniczeń | chkValidEndDate | 1 | 1 || Test Ograniczeń | chkTeamSize | 1 | 1 || Zawód | chkTytułZadania | 0 | 0 |+----------------+-----------------+------------ ---+------------------+

Zgodnie z oczekiwaniami wszystkie trzy ograniczenia dla ConstraintTest tabela została wyłączona (ponieważ is_disabled kolumna jest ustawiona na 1 dla tych ograniczeń).

Zauważ, że jest_nie_zaufany kolumna jest również ustawiona na 1 . Jest to ważna uwaga, zwłaszcza jeśli zamierzasz ponownie włączyć którekolwiek z wyłączonych ograniczeń.

Zobacz, co powinieneś wiedzieć o funkcji NOCHECK podczas włączania ograniczenia wyboru w programie SQL Server, aby uzyskać informacje na temat przywracania zaufania podczas ponownego włączania ograniczeń. Informacje zawarte w tym artykule dotyczą również kluczy obcych.

Wyłącz ograniczenia indywidualnie

Jeśli nie chcesz wyłączać wszystkich ograniczeń w tabeli, możesz je wyłączyć pojedynczo. Zobacz Jak wyłączyć ograniczenie CHECK w SQL Server i Jak wyłączyć klucz obcy w SQL Server.

Ponownie włącz ograniczenia

Jeśli chcesz ponownie włączyć wszystkie ograniczenia dla tabeli, zobacz Jak włączyć wszystkie ograniczenia sprawdzania i klucza obcego dla tabeli.

Jeśli chcesz ponownie włączyć je pojedynczo, zobacz Jak włączyć ograniczenie wyboru w SQL Server i Jak włączyć klucz obcy w SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ulepszony skrypt, który zwraca wszystkie właściwości z SERVERPROPERTY() w SQL Server

  2. Najlepszy sposób na przechowywanie czasu (gg:mm) w bazie danych

  3. Obliczanie wartości przy użyciu poprzedniej wartości wiersza w T-SQL

  4. Modyfikowanie harmonogramu agentów serwera SQL (T-SQL)

  5. Używanie DBCC CLONEDATABASE do generowania schematu i tylko kopii statystyk bazy danych użytkownika w programie SQL Server 2014 z dodatkiem SP2