Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да съкратите всички таблици в база данни с помощта на TSQL?

Когато се занимаваме с изтриване на данни от таблици, които имат връзки с външни ключове - което по същество е случаят с всяка правилно проектирана база данни - можем да деактивираме всички ограничения, да изтрием всички данни и след това да активираме отново ограничения

-- 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"

Повече за деактивирането на ограничения и задействания тук

ако някои от таблиците имат колони за идентичност, може да искаме да ги заредим отново

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

Обърнете внимание, че поведението на RESEED се различава между чисто новата таблица и тази, която е имала някои данни, вмъкнати преди това от BOL:

DBCC CHECKIDENT ('table_name', RESEED, newReseedValue)

Текущата стойност на идентичността е зададена на newReseedValue. Ако в таблицата не са били вмъкнати редове от създаването й, първият ред, вмъкнат след изпълнение на DBCC CHECKIDENT, ще използва newReseedValue като идентичност. В противен случай следващият вмъкнат ред ще използва newReseedValue + 1. Ако стойността на newReseedValueum е по-малка от стойността на themaxim identity съобщение за грешка 2627 ще бъде генерирано при последващи препратки към таблицата.

Благодаря на Робърт, че посочи факта, че деактивирането на ограничения не позволява използването на truncate, ограниченията ще трябва да бъдат премахнати и след това пресъздадени



  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, Как да задам автоматично увеличение след създаване на таблица без загуба на данни?

  2. Пълно ръководство за коригиране на грешка в SQL база данни 5243

  3. C# Еквивалент на SQL Server DataTypes

  4. Как да замените нулеви стойности с неизвестно в изявление за избор в SQL Server - SQL Server / TSQL урок, част 111

  5. SQL - Изваждане на изчерпваща стойност от редове