sqlite3 вставить строку, если уникальная - PullRequest
0 голосов
/ 12 марта 2012

Вот моя схема таблицы:

downloadstbl

_id int not null auto
url text not null
filename text not null
date text not null)

Я хотел бы вставить строку, только если в таблице уже нет строки с таким же URL-адресом.

Например, если существует следующая строка:

_id=1
url="http://google.com/img.jp"
filename="img.jp"
date="11/03/2012"

тогда, если я попытаюсь вставить другую строку с url = "http://google.com/img.jp", оператор sql не будет вставлен, чтобы избежать дублирования строк для того же удаленного файла.

Я знаю, что, вероятно, мог бы сделать это, сначала выполнив SELECT и проверив, существует ли уже строка, однако я хотел бы проверить, возможно ли это в месте вставки, чтобы сделать вещи более надежными / чистыми.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Вы можете (и должны, из соображений целостности данных) добавить уникальное ограничение к столбцу url, добавив UNIQUE(url) в оператор SQL для вашей таблицы или просто добавив unique после not null. Это приведет к сбою вставки при вставке строки, где URL уже находится в таблице. Затем вы можете использовать insertWithOnConflict, чтобы проверить результат вставки.

1 голос
/ 12 марта 2012

Прежде всего, я бы добавил ключевое слово UNIQUE в столбец url.Затем при вставке используйте это INSERT OR IGNORE вместо INSERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...