SQLite
 sql >> база данни >  >> RDS >> SQLite

Симулирайте ORDER BY в SQLite UPDATE, за да се справите с ограничението за уникалност

Прав сте, че проблемът се появява, защото SQLite проверява ограниченията след всяка актуализация на ред, а не в края на оператора или в края на транзакцията.

Виждам това заобикаляне на проблема (за това, че SQLite не е внедрил UPDATE правилно). Ако приемем, че priority колоната няма отрицателни стойности, можем да ги използваме (отрицателни стойности) като временни, за да избегнем UNIQUE грешки при ограничения:

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се обвърже аргумент в индекс 2, защото индексът е извън обхвата

  2. Настройка на производителността на SQLite

  3. Как да форматирате резултатите от заявката на SQLite в режим TCL

  4. android.database.sqlite.SQLiteException:близо до s:синтактична грешка (код 1):,

  5. 3 начина за генериране на скрипт CREATE TABLE от съществуваща таблица в SQLite