Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

विदेशी कुंजी बाधाओं को कैसे विश्वसनीय बनाया जाए?

आपके उदाहरणों के आधार पर, मैंने भी कोशिश की है:

  • विदेशी कुंजी को छोड़ें और पुन:बनाएँ।
  • तालिका को छोड़ें और पुन:बनाएँ।

तब मैंने कमांड में कुछ देखा:

NOT FOR REPLICATION

ऐसा लगता है कि यदि प्रतिकृति के लिए नहीं के साथ एक बाधा बनाई गई है, तो उस पर हमेशा भरोसा नहीं किया जाता है।

बुक्स ऑनलाइन से उद्धरण :

ऐसा लगता है कि IS_NOT_TRUSTED सेटिंग <स्ट्राइक>केवल प्रतिकृति के लिए प्रासंगिक है IS_NOT_FOR_REPLICATION . से प्रभावित . मुझे लगता है कि जब तक आप जिस सर्वर पर काम कर रहे हैं, उस पर बाधा लागू है, यह ठीक होना चाहिए। इसलिए मैंने आगे बढ़कर इसकी पुष्टि की:

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.

अगर आप अभी भी IS_NOT_TRUSTED = 0 see देखना चाहते हैं मन की शांति के लिए, बिना NOT FOR REPLICATION . के बस विदेशी कुंजी फिर से बनाएं ।

यदि आप में से कोई सोच रहा है, तो मैंने CHECK बाधाओं पर भी उसी प्रभाव को सत्यापित किया है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बेहतर प्रदर्शन ट्यूनिंग के लिए 11 SQL सर्वर अनुक्रमणिका सर्वोत्तम अभ्यास

  2. SQL सर्वर में पॉलीमॉर्फिक एसोसिएशन को लागू करने का सबसे अच्छा तरीका क्या है?

  3. sp_MSforeachdb:केवल परिणामों के साथ डेटाबेस से परिणाम शामिल करें

  4. SQL सर्वर में CONTEXT_INFO का दायरा क्या है?

  5. खोजों का एक अवलोकन नवीनतम डेटाबेस निगरानी सेवा - स्पॉटलाइट क्लाउड