आप समझते हैं कि आपके बीच टकराव ठीक होगा?
आपको ऐसा कुछ करने की ज़रूरत है और इससे गतिरोध हो सकता है इसलिए सुनिश्चित करें कि आप यहां क्या हासिल करने की कोशिश कर रहे हैं
DECLARE @id int
BEGIN TRAN
SELECT @id = MAX(id) + 1 FROM Table1 WITH (UPDLOCK, HOLDLOCK)
INSERT INTO Table1(id, data_field)
VALUES (@id ,'[blob of data]')
COMMIT TRAN
टक्कर की बात समझाने के लिए, मैंने कुछ कोड प्रदान किए हैं
पहले यह तालिका बनाएं और एक पंक्ति डालें
CREATE TABLE Table1(id int primary key not null, data_field char(100))
GO
Insert Table1 values(1,'[blob of data]')
Go
अब दो क्वेरी विंडो खोलें और इसे एक साथ चलाएं
declare @i int
set @i =1
while @i < 10000
begin
BEGIN TRAN
INSERT INTO Table1(id, data_field)
SELECT MAX(id) + 1, '[blob of data]' FROM Table1
COMMIT TRAN;
set @i [email protected] + 1
end
आप इनमें से एक गुच्छा देखेंगे
सर्वर:Msg 2627, स्तर 14, राज्य 1, पंक्ति 7 प्राथमिक कुंजी बाधा 'PK__Table1__3213E83F2962141D' का उल्लंघन। ऑब्जेक्ट 'dbo.Table1' में डुप्लीकेट कुंजी सम्मिलित नहीं कर सकता। स्टेटमेंट समाप्त कर दिया गया है।