Ud fra dine eksempler har jeg også prøvet:
- Slip og genskab fremmednøglen.
- Slip og genskab tabellen.
Så lagde jeg mærke til noget i kommandoen:
NOT FOR REPLICATION
Det ser ud til, at hvis en begrænsning oprettes med IKKE TIL REPLIKATION, er den altid ikke tillid.
Citerer fra Bøger online :
Det ligner IS_NOT_TRUSTED
indstilling er kun relevant for replikering påvirket af IS_NOT_FOR_REPLICATION
. Jeg gætter på, at så længe begrænsningen håndhæves på den server, du arbejder på, burde det være fint. Så jeg gik videre og bekræftede det:
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.
Hvis du stadig vil se IS_NOT_TRUSTED = 0
for ro i sindet skal du bare genskabe fremmednøglen uden NOT FOR REPLICATION
.
Hvis de af jer undrer jer, har jeg bekræftet den samme effekt på CHECK-begrænsninger.