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

Как могат да бъдат временно деактивирани ограниченията на външния ключ с помощта на T-SQL?

Ако искате да деактивирате всички ограничения в базата данни, просто изпълнете този код:

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

За да ги включите отново, стартирайте:(разпечатването не е задължително, разбира се и просто изброява таблиците)

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

Намирам го за полезен при попълване на данни от една база данни в друга. Това е много по-добър подход от премахването на ограниченията. Както споменахте, това е удобно, когато изтриете всички данни в базата данни и ги повторно попълните (да речем в тестова среда).

Ако изтривате всички данни, може да намерите това решение за полезно.

Също така понякога е удобно да деактивирате и всички тригери, можете да видите пълното решение тук.



  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 Server 2016 Standard Edition

  3. Коригиране на проблем с отказване на достъп до възстановяване на SQL база данни

  4. Свързване на SQL Server към база данни на Java

  5. SQL Server 2016:Винаги криптиран