sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan begränsningar för främmande nyckel tillfälligt inaktiveras med T-SQL?

Om du vill inaktivera alla begränsningar i databasen, kör bara den här koden:

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

För att slå på dem igen, kör:(utskriften är naturligtvis valfri och den listar bara tabellerna)

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

Jag tycker att det är användbart när jag fyller i data från en databas till en annan. Det är mycket bättre tillvägagångssätt än att släppa begränsningar. Som du nämnde är det praktiskt när man släpper all data i databasen och fyller på den igen (säg i testmiljö).

Om du tar bort all data kanske du tycker att den här lösningen är till hjälp.

Ibland är det också praktiskt att inaktivera alla triggers också, du kan se hela lösningen här.



  1. Vad är logisk OCH operatör i SQL Server - SQL Server / TSQL Tutorial Del 120

  2. Hur man skapar en tabell i SQL Server med hjälp av en fråga

  3. SÄTT IN VÄRDEN DÄR INTE FINNS

  4. PostgreSQL ILIKE-fråga med SQLAlchemy