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

तालिका को छोटा नहीं किया जा सकता क्योंकि इसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा रहा है - SQL सर्वर / TSQL ट्यूटोरियल भाग 70

परिदृश्य:

आपको एक तालिका को छोटा करने की आवश्यकता है, लेकिन जब आप तालिका को छोटा करने का प्रयास करते हैं तो तालिका का नाम। आपको नीचे त्रुटि मिलती है।

संदेश 4712, स्तर 16, राज्य 1, पंक्ति 43
तालिका 'SchemaName.TableName' को छोटा नहीं किया जा सकता क्योंकि इसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा रहा है।

आप इस तालिका को कैसे छोटा करेंगे?

समाधान:

विदेशी कुंजी संबंध में शामिल तालिका के रूप में, आपको पहले विदेशी कुंजी बाधा को छोड़ना होगा और फिर छोटा तालिका विवरण निष्पादित करना होगा। और dbo.Orders और फिर Dbo के कॉलम में से एक पर विदेशी कुंजी बाधा बनाएं। dbo.Customer तालिका को ऑर्डर करें।

USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )

CREATE TABLE dbo.Orders (
    OrderId INT Identity(1, 1)
    ,OrderitemName VARCHAR(50)
    ,OrderItemAmt INT,
    CustomerId int
    )

--Create Foreign Key Constraint 
    Alter table dbo.Orders with Nocheck
    Add Constraint Fk_CustomerId  
    Foreign Key(CustomerId) References dbo.Customer(CustomerId)
 
 
 अब अगर मैं dbo.Orders तालिका को छोटा करने का प्रयास करता हूं, तो यह कोई त्रुटि नहीं देगा। लेकिन जब मैं dbo.Customer तालिका को छोटा करने का प्रयास करता हूं तो यह त्रुटि को dbo के रूप में फेंक देगा। ग्राहक विदेशी कुंजी बाधा द्वारा संदर्भ शुरू कर रहा है।

उस तालिका को कैसे छोटा करें जो SQL सर्वर में विदेशी कुंजी बाधा द्वारा संदर्भित हो

हम अभी के लिए बाधा छोड़ सकते हैं, तालिका को छोटा कर सकते हैं और फिर विदेशी कुंजी बाधा को फिर से बना सकते हैं।

तालिका पर विदेशी कुंजी बाधाओं को खोजने के लिए, आप नीचे दिए गए कथन का उपयोग कर सकते हैं।

SELECT * 
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Customer')
 
 
एसक्यूएल सर्वर में सिस्टम टेबल से कंस्ट्रेंट नाम कैसे प्राप्त करें
 
 नीचे दी गई स्क्रिप्ट का उपयोग आपकी तालिका के लिए ड्रॉप बाधा विवरण उत्पन्न करने के लिए किया जा सकता है

 
SELECT 
    'ALTER TABLE ' 
    +  OBJECT_SCHEMA_NAME(parent_object_id) 
    +'.[' + OBJECT_NAME(parent_object_id) 
    +'] DROP CONSTRAINT ' 
    + name as DropFKConstraint
FROM sys.foreign_keys
के रूप में चुनें
WHERE referenced_object_id = object_id('dbo.Customer') 
 
 
एसक्यूएल सर्वर में टेबल पर फॉरेन की बाधा को कैसे छोड़ें
 ड्रॉप फॉरेन की बाधा के लिए परिणाम लें और निष्पादित करें, उसके बाद तालिका को छोटा करने के लिए अपना छोटा तालिका विवरण चलाएं। इसे बिना किसी त्रुटि के पूरा करना चाहिए।


वीडियो डेमो :तालिका को छोटा नहीं किया जा सकता क्योंकि इसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा रहा है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में वर्तमान तिथि कैसे प्राप्त करें

  2. 5 सफल डीबीए की डेटाबेस निगरानी की आदतें

  3. SQL सर्वर में पहचान () फ़ंक्शन का उपयोग कैसे करें

  4. SQL सर्वर के आधुनिक संस्करण में अपग्रेड करने के लिए परफेक्ट स्टॉर्म

  5. वर्तमान वर्कस्टेशन नाम लौटाएं जो SQL सर्वर (T-SQL) से जुड़ा है