मैं एसक्यूएल सर्वर 2008 का उपयोग कर रहा है, और INSERT
बयानसंभव SQL सर्वर के साथ नकली चाबी अद्यतन पर MySQL कार्यक्षमता अनुकरण
वर्तमान विरासत कोड करता है के लिए mySQL के पर DUPLICATE KEY UPDATE
खंड की तरह कुछ का लाभ लेने में सक्षम होना चाहते हैं एक हटा सकते हैं और बाद में डालने कि अलग धागे से नकली चाबी आवेषण के साथ संगामिति मुद्दों में चल रहा है:
यहाँ त्रुटि मैं अपने उत्पादन वातावरण में देखें:
Violation of PRIMARY KEY constraint 'PK_Audience'. Cannot insert duplicate key in object 'dbo.Audience'.
(sp_ContentUpdate)
प्राथमिक कुंजी:
AudienceId, VersionId
हमलावर एसक्यूएल:
DELETE FROM dbo.Audience
WHERE VersionId = @VersionId
IF @AudienceXml IS NOT NULL
BEGIN
INSERT INTO dbo.Audience (
VersionId,
AudienceId,
CreatedDate,
CreatedByPersonId,
)
SELECT @VersionId,
AudienceId,
GETUTCDATE(),
@PersonId
FROM dbo.Audience
JOIN @AudienceXml.nodes('/Audiences/Audience') node(c)
ON Audience.AudienceName = c.value('@Name', 'nvarchar(50)')
END
रैपिंग किसी लेनदेन में इस TSQL या तो समय बदलकर संगामिति मुद्दा हटाने या मुद्दा मुखौटा लगता है। हालांकि, मुझे नहीं लगता कि एक लेनदेन में लपेटने से वास्तव में समेकन हल हो गया है।
शायद मैं इस गलत के बारे में जा रहा हूं। आपके सुझावों की सराहना की जाती है।
संभव डुप्लिकेट (http: // stackoverflow .com/प्रश्न/1197733/करता-sql-server-offer-anything-like-mysqls-on-duplicate-key-update) –