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

Jak można tymczasowo wyłączyć ograniczenia klucza obcego za pomocą T-SQL?

Jeśli chcesz wyłączyć wszystkie ograniczenia w bazie danych, po prostu uruchom ten kod:

-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Aby je ponownie włączyć, uruchom:(wydruk jest oczywiście opcjonalny i zawiera tylko listę tabel)

-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Uważam to za przydatne podczas wypełniania danych z jednej bazy danych do drugiej. To znacznie lepsze podejście niż zrzucanie ograniczeń. Jak wspomniałeś, jest to przydatne przy usuwaniu wszystkich danych w bazie danych i ponownym ich wypełnianiu (powiedzmy w środowisku testowym).

Jeśli usuwasz wszystkie dane, to rozwiązanie może okazać się pomocne.

Czasami przydatne jest również wyłączenie wszystkich wyzwalaczy, pełne rozwiązanie można zobaczyć tutaj.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 - uporządkuj według ciągów z liczbą liczbową

  2. Uzyskaj listę obsługiwanych stref czasowych w SQL Server (T-SQL)

  3. Czy kolejność kolumn w klauzuli WHERE ma znaczenie?

  4. Instrukcja CASE w klauzuli WHERE w SQL Server 2008

  5. Instrukcja usuwania SQL Server:jak usunąć jeden lub wiele wierszy z tabeli