Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Как сделать запрет на повтор?

Проблема такая, если занесли запись через запрос 'INSERT INTO' в таблицу, и второй раз допустим случайно с таким же названиям, то данные не добавляются и это хорошо, НО сам 'id' увеличивается в значении, каждой раз на одиницю, если совпадают названия , что в моем случаи мне не подходит , возможно ли как-то это решить ?
Параметры таблицы
CREATE TABLE "content" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, "title" TEXT NOT NULL, "category" INTEGER NOT NULL, "directians" TEXT NOT NULL, "time" INTEGER, "img" TEXT, "autor" TEXT, "datetime" DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE ("title") ON CONFLICT REPLACE)


Ответ

Если значение ID увеличивается на единицу, то значит что данные, на самом деле, добавляются, а если быть точнее, то вновь добавляемые данные заменяют предыдущие значения. Об этом поведении говорит строка: UNIQUE ("title") ON CONFLICT REPLACE
А для того, чтобы запретить добавление одинаковых данных и соответственно увеличения ID на единицу, нужно просто заменить поведение при конфликтных случаях с этого:
UNIQUE ("title") ON CONFLICT REPLACE
на вот это:
UNIQUE ("title") ON CONFLICT IGNORE
Таким образом, вновь добавляемые данные будут игнорироваться и добавление не сработает.

Комментариев нет:

Отправить комментарий