Op basis van jouw voorbeelden heb ik ook het volgende geprobeerd:
- Laat de externe sleutel vallen en maak deze opnieuw.
- Laat de tafel vallen en maak deze opnieuw.
Toen merkte ik iets op in het commando:
NOT FOR REPLICATION
Het lijkt erop dat als een beperking is gemaakt met NOT FOR REPLICATION, deze altijd niet wordt vertrouwd.
Citaat uit Books Online :
Het lijkt op de IS_NOT_TRUSTED
instelling is alleen relevant voor replicatie beïnvloed door IS_NOT_FOR_REPLICATION
. Ik denk dat zolang de beperking wordt gehandhaafd op de server waaraan u werkt, het goed zou moeten zijn. Dus ik ging door en bevestigde het:
SELECT name, is_disabled, is_not_trusted
FROM sys.foreign_keys
WHERE name = 'FK_Product_ProductKeyId'
name is_disabled is_not_trusted
FK_Product_ProductKeyId 0 1
INSERT INTO dbo.Sale VALUES (2, GETDATE(), 1.00)
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Product_ProductKeyId". The conflict occurred in database "_Scratch", table "dbo.Product", column 'ProductKeyId'.
The statement has been terminated.
Als je nog steeds IS_NOT_TRUSTED = 0
. wilt zien voor gemoedsrust, maak gewoon de externe sleutel opnieuw aan zonder NOT FOR REPLICATION
.
Mochten jullie het zich afvragen:ik heb hetzelfde effect ook op CHECK-beperkingen geverifieerd.