Inaktivera begränsningar för främmande nyckel med INSERT- och UPDATE-satser
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Du kan inaktivera en begränsning för sekundärnyckel under INSERT- och UPDATE-transaktioner i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL. Använd det här alternativet om du vet att nya data inte bryter mot den befintliga begränsningen eller om villkoret endast gäller för data som redan finns i databasen.
Begränsningar och restriktioner
När du har inaktiverat dessa begränsningar verifieras inte framtida infogningar eller uppdateringar av kolumnen mot villkorsvillkoren.
behörigheter
Kräver ALTER-behörighet på tabellen.
Använda SQL Server Management Studio
Inaktivera en främmande nyckelbegränsning för INSERT- och UPDATE-instruktioner
I Object Explorerexpanderar du tabellen med villkoret och expanderar sedan mappen Nycklar.
Högerklicka på villkoret och välj Ändra.
I rutnätet under Table Designerväljer du Aktivera främmande nyckelbegränsning och väljer Nej i den nedrullningsbara menyn.
Välj Stäng.
För att återaktivera begränsningen vid behov, vänd stegen ovan. Välj Framtvinga villkor för främmande nyckel och välj Ja från rullgardinsmenyn.
Om du vill lita på begränsningen genom att kontrollera befintliga data i sekundärnyckelns relation väljer du Kontrollera befintliga data vid skapande eller återaktivering av och väljer Ja från den nedrullningsbara menyn. Detta skulle säkerställa att begränsningen för den främmande nyckeln är betrodd.
- Om Kontrollera befintliga data vid skapande eller återaktivering av är inställd på Nej, kontrollerar inte främmande nyckeln befintliga data när den återaktiveras. Frågeoptimeraren kan därför inte överväga potentiella prestandaförbättringar. Betrodda utländska nycklar rekommenderas eftersom de kan användas för att förenkla exekveringsplaner med antaganden baserat på den utländska nyckelns begränsning. Om du vill kontrollera om främmande nycklar är betrodda i din databas, se en exempelfråga senare i den här artikeln.
Använd Transact-SQL
Inaktivera en främmande nyckelbegränsning för INSERT- och UPDATE-instruktioner.
I Object Exploreransluter du till en instans av databasmotorn.
I standardfältet väljer du Ny fråga.
Kopiera och klistra in följande exempel i frågefönstret och välj Kör.
USE AdventureWorks2022; GO ALTER TABLE Purchasing.PurchaseOrderHeader NOCHECK CONSTRAINT FK_PurchaseOrderHeader_Employee_EmployeeID; GO
Om du vill aktivera begränsningen igen kopierar du och klistrar in följande exempel i frågefönstret och väljer Kör.
USE AdventureWorks2022; GO ALTER TABLE Purchasing.PurchaseOrderHeader CHECK CONSTRAINT FK_PurchaseOrderHeader_Employee_EmployeeID; GO
Kontrollera att begränsningen i din miljö är både betrodd och aktiverad. Om
is_not_trusted
= 1, kontrollerar inte den främmande nyckeln befintliga data när den återaktiveras eller återskapas. Frågeoptimeraren kan därför inte överväga potentiella prestandaförbättringar. Betrodda främmande nycklar rekommenderas eftersom de kan användas för att förenkla utförandeplaner med antaganden baserat på främmande nyckel-begränsningen. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.SELECT o.name, fk.name, fk.is_not_trusted, fk.is_disabled FROM sys.foreign_keys AS fk INNER JOIN sys.objects AS o ON fk.parent_object_id = o.object_id WHERE fk.name = 'FK_PurchaseOrderHeader_Employee_EmployeeID'; GO
Du bör ställa in främmande nyckel-begränsningen som betrodd om befintliga data i tabellen uppfyller begränsningen för främmande nyckel. För att ange den främmande nyckeln som betrodd, använd följande skript för att återigen etablera tillit till den främmande nyckelns villkor, och observera den extra syntaxen
WITH CHECK
. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.ALTER TABLE [Purchasing].[PurchaseOrderHeader] WITH CHECK CHECK CONSTRAINT FK_PurchaseOrderHeader_Employee_EmployeeID; GO