sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan fremmednøglebegrænsninger midlertidigt deaktiveres ved hjælp af T-SQL?

Hvis du vil deaktivere alle begrænsninger i databasen, skal du bare køre denne kode:

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

For at tænde dem igen, kør:(udskriften er selvfølgelig valgfri, og den viser bare tabellerne)

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

Jeg finder det nyttigt, når du udfylder data fra en database til en anden. Det er en meget bedre tilgang end at droppe begrænsninger. Som du nævnte, er det praktisk, når du dropper alle data i databasen og genbefolker dem (f.eks. i testmiljø).

Hvis du sletter alle data, kan denne løsning være nyttig.

Nogle gange er det også praktisk at deaktivere alle triggere, du kan se den komplette løsning her.



  1. Slut dig til os i Amsterdam til et møde med OptimaData &VidaXL

  2. Hvordan forespørges databasenavn i Oracle SQL Developer?

  3. Databasehjørne:Begyndervejledning til Mysql-lagringsmotorer

  4. Simuler ORDER BY i SQLite UPDATE for at håndtere entydighedsbegrænsning