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

Jak obcinać wszystkie tabele w bazie danych za pomocą TSQL?

Kiedy mamy do czynienia z usuwaniem danych z tabel, które mają relacje klucza obcego - co w zasadzie ma miejsce w przypadku każdej poprawnie zaprojektowanej bazy danych - możemy wyłączyć wszystkie ograniczenia, usunąć wszystkie dane, a następnie ponownie włączyć ograniczenia

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

-- delete data in all tables
EXEC sp_MSForEachTable "DELETE FROM ?"

-- enable all constraints
exec sp_MSForEachTable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Więcej o wyłączaniu ograniczeń i wyzwalaczy tutaj

jeśli niektóre tabele mają kolumny tożsamości, możemy je ponownie umieścić

EXEC sp_MSForEachTable "DBCC CHECKIDENT ( '?', RESEED, 0)"

Zwróć uwagę, że zachowanie RESEED różni się między zupełnie nową tabelą, a tą, w której wcześniej wprowadzono pewne dane z BOL:

DBCC CHECKIDENT ('nazwa_tabeli', RESEED, newReseedValue)

Bieżąca wartość tożsamości jest ustawiona na newReseedValue. Jeśli do tabeli nie wstawiono żadnych wierszy od czasu jej utworzenia, pierwszy wiersz wstawiony po wykonaniu polecenia DBCC CHECKIDENT użyje nowej wartościReseedValue jako tożsamości. W przeciwnym razie następny wstawiony wiersz użyje nowej wartościReseedValue + 1. Jeśli wartość newReseedValue jest mniejsza niż wartość maksymalna w kolumnie tożsamości, komunikat o błędzie 2627 zostanie wygenerowany przy kolejnych odwołaniach do tabeli.

Dziękuję Robertowi za zwrócenie uwagi na fakt, że wyłączenie ograniczeń nie pozwala na użycie funkcji obcinania, ograniczenia musiałyby zostać usunięte, a następnie odtworzone



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-sql - określ, czy wartość jest liczbą całkowitą

  2. Jak utworzyć tabelę z wyniku zapytania wybierającego w SQL Server 2008

  3. Dynamiczny SQL (przekazywanie nazwy tabeli jako parametru)

  4. Przykłady TAN() w SQL Server

  5. Jak używać SqlTransaction w C#