SQL सर्वर के साथ काम करने वाला एक और तरीका है: अपने अद्यतन विवरण में एक temp तालिका में शामिल हों।
समस्या एक ही मूल्य एक ही समय के साथ दो पंक्तियों के कारण होती है, लेकिन यदि आप दोनों पंक्तियों को एक साथ (अपने नए, अद्वितीय मूल्यों) में अपडेट करते हैं, तो कोई बाधा उल्लंघन नहीं होता है।
छद्म कोड:
-- setup initial data values:
insert into data_table(id, name) values(1, 'A')
insert into data_table(id, name) values(2, 'B')
-- create temp table that matches live table
select top 0 * into #tmp_data_table from data_table
-- insert records to be swapped
insert into #tmp_data_table(id, name) values(1, 'B')
insert into #tmp_data_table(id, name) values(2, 'A')
-- update both rows at once! No index violations!
update data_table set name = #tmp_data_table.name
from data_table join #tmp_data_table on (data_table.id = #tmp_data_table.id)
इस तकनीक के लिए रिच एच के लिए धन्यवाद।
- निशान