Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2016 (13.x) och senare versioner
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ärnyckeln 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
Så här inaktiverar du en begränsning för främmande nyckel för INSERT- och UPDATE-satser
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 Designer, välj Enforce Foreign Key Constraint och välj Nej från rullgardinslistan.
Välj Stäng.
För att återaktivera begränsningen vid behov, vänd stegen ovan. Välj Verkställ främmande nyckelbegränsning och välj Ja från rullgardinsmenyn.
För att lita på begränsningen genom att kontrollera befintlig data i främmande nyckelns relation, välj Kontrollera befintlig data vid skapande eller återaktivering och välj Ja från rullgardinslistan. Detta skulle säkerställa att begränsningen för den externa nyckeln är godkänd.
- 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
Så här inaktiverar du en begränsning för främmande nyckel för INSERT- och UPDATE-satser
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; GOOm 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; GOKontrollera 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 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. 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'; GODu bör ställa in referensbegränsningen som tillförlitlig om nuvarande data i tabellen uppfyller referensbegränsningen. 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