आप सही हैं कि समस्या प्रकट होती है क्योंकि SQLite प्रत्येक पंक्ति अद्यतन के बाद बाधाओं की जांच करता है, न कि कथन के अंत या लेनदेन के अंत में।
मुझे समस्या के लिए यह समाधान दिखाई देता है (SQLite ने UPDATE
implemented लागू नहीं किया है सही ढंग से)। यह मानते हुए कि priority
कॉलम में कोई नकारात्मक मान नहीं है, हम UNIQUE
से बचने के लिए अस्थायी के रूप में उनका (ऋणात्मक मान) उपयोग कर सकते हैं बाधा त्रुटियाँ:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;