sql >> Databasteknik >  >> RDS >> SQLite

Simulera ORDER BY i SQLite UPDATE för att hantera unikhetsbegränsningar

Du har rätt i att problemet uppstår eftersom SQLite kontrollerar begränsningarna efter varje raduppdatering och inte i slutet av uttalandet eller slutet av transaktionen.

Jag ser denna lösning på problemet (med att SQLite inte har implementerat UPDATE korrekt). Förutsatt att priority kolumnen inte har några negativa värden, vi kan använda dem (negativa värden) som tillfälliga för att undvika UNIQUE begränsningsfel:

UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;

UPDATE table1 SET priority = - priority WHERE priority < 0 ;



  1. SQLiteAssetHelper:Det gick inte att öppna databasen för skrivning (försöker skrivskyddat)

  2. Kerberos för SQLyog av MariaDB Connector/C

  3. hur ersätter den accentuerade bokstaven i en varchar2-kolumn i Oracle

  4. ställa in global sql_mode i mysql