का कारण बनता है हाल ही में मुझे एक ऐसी स्थिति थी जहां मुझे किसी तालिका से कुछ पंक्तियां हटाने और स्तंभ नाम गलत वर्तनी की आवश्यकता होती थी। कोई त्रुटि नहीं फेंक दी गई और तालिका से सभी पंक्तियां हटा दी गईं। यहां एक ऐसी स्क्रिप्ट है जो इस मुद्दे को पुन: उत्पन्न करती है।कहां (चयन नॉनएक्सस्टिंग कॉलमनाम) अप्रत्याशित व्यवहार
ऑर्डर आईडी के साथ चार ऑर्डर के साथ ऑर्डर टेबल है। एक आइटम आईडी के साथ एक LIST_TO_DELETE तालिका है।
मैं का इस्तेमाल किया है चाहिए
DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT ItemID FROM #LIST_TO_DELETE )
बजाय मैं
DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT OrderID FROM #LIST_TO_DELETE )
इस्तेमाल किया यह #orders तालिका में सभी पंक्तियों के कारण होता है जब मैं केवल एक को नष्ट करने के लिए होती हटाए जाने के लिए।
CREATE TABLE #Orders (OrderID INT, OrderName VARCHAR(100))
INSERT INTO #Orders(OrderID, OrderName) VALUES (1,'Order One'),(2,'Order Two'),(3,'Order Three'), (4,'Order Four')
CREATE TABLE #LIST_TO_DELETE (ItemID INT);INSERT INTO #LIST_TO_DELETE(ItemID) VALUES (1)
DECLARE @rowcount INT = 1
WHILE @rowcount > 0
BEGIN
DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT OrderID FROM #LIST_TO_DELETE )
SET @rowcount = @@rowcount
END
SELECT * FROM #Orders
DROP TABLE #Orders
DROP TABLE #LIST_TO_DELETE
अपने मूल कोड में, आदेश तालिका वास्तविक था और LIST_TO_DELETE एक मेज चर था, लेकिन इससे कोई फर्क नहीं क्या तालिका प्रकार प्रयोग किया जाता है बनाने के लिए लगता है। अगर मैं OrderID या ItemID से अलग किसी भी कॉलम नाम का उपयोग करें, मैं एक त्रुटि
DELETE TOP(1) FROM #Orders WHERE OrderID IN (SELECT OtherID FROM #LIST_TO_DELETE )
Invalid column name 'OtherID'
इस कोड को इस तरह से व्यवहार करते हैं क्यों मिलता है?
मुझे विश्वास नहीं है कि मुझे इसका सामना करना पड़ा है, लेकिन मुझे लगता है कि उपनाम के बिना, SQL सर्वर सोचता है कि उपयोगकर्ता आईडी उपयोगकर्ता तालिका से आता है। एक आसान परीक्षण एक स्तंभ नाम का उपयोग करना होगा जो किसी भी तालिका में मौजूद नहीं है और देखें कि क्या होता है। –
इससे एक त्रुटि फेंक जाएगी। आप एसक्यूएल के बारे में सही मानते हैं कि user_id उपयोगकर्ता तालिका – Raj
@Raj से आता है क्या आपके पास एमएसडीएन या किसी भी माइक्रोसॉफ्ट पेज का लिंक है जहां इस समस्या का वर्णन किया गया है? – Don