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

Hvordan gør man begrænsninger for fremmednøgle tillid?

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.




  1. hvordan man bruger zend paginate uden at indlæse alle resultaterne af en database

  2. Nysgerrig efter de seneste Microsoft Access-funktioner?

  3. MySQL-kompatibilitet med MacOS Sierra

  4. Modellering af en åben markedsplads for uddannelse