sql >> Database >  >> RDS >> Sqlserver

Hoe kunnen beperkingen met externe sleutels tijdelijk worden uitgeschakeld met T-SQL?

Als u alle beperkingen in de database wilt uitschakelen, voert u deze code uit:

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

Om ze weer in te schakelen, voer je uit:(de afdruk is natuurlijk optioneel en het geeft alleen de tabellen weer)

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

Ik vind het handig bij het vullen van gegevens van de ene database naar de andere. Het is een veel betere benadering dan beperkingen op te heffen. Zoals je al zei, is het handig wanneer alle gegevens in de database worden verwijderd en opnieuw worden ingevuld (bijvoorbeeld in een testomgeving).

Als u alle gegevens verwijdert, kan deze oplossing nuttig zijn.

Soms is het ook handig om alle triggers uit te schakelen, je kunt de volledige oplossing hier zien.



  1. pgDash Diagnostische alternatieven - PostgreSQL-querybeheer met ClusterControl

  2. 40 vragen die u moet weten over R12.2

  3. De naam van de primaire sleutelbeperking voor meerdere tabellen in de SQL Server-database wijzigen - SQL Server / TSQL-zelfstudie, deel 64

  4. Entiteitsframework erg traag om voor de eerste keer te laden na elke compilatie