sqlite & flex - вставить, если не существует? - PullRequest
3 голосов
/ 05 февраля 2010

Я использую flex для разработки своего первого настольного приложения и впервые работаю с sqlite.

Я создаю свою базу данных и все таблицы, и я также хотел бы добавить несколько строк данных в пару таблиц, чтобы у пользователей были некоторые данные для работы при первой установке.

Единственная проблема, с которой я сталкиваюсь - каждый раз, когда я запускаю программу, она снова и снова вставляет одни и те же данные.

Мне просто интересно, можно ли это сделать - ВСТАВИТЬ В, ЕСЛИ НЕ СУЩЕСТВУЕТ. или какой-то другой способ обойти.

спасибо!

Ответы [ 2 ]

4 голосов
/ 05 февраля 2010

Вставьте дубликаты данных с тем же первичным ключом и используйте условие конфликта "IGNORE":

sqlite> create table t(i integer primary key not null);
sqlite> insert into t values(1);
sqlite> insert or ignore into t values(1);
sqlite> select * from t;
1

Повторяющиеся значения не будут вставлены, и оператор будет успешно выполнен.

В качестве альтернативы, вы можете использовать ограничение "UNIQUE" вместо первичного ключа:

sqlite> create table t(i integer unique not null);
sqlite> insert into t values(1);
sqlite> insert or ignore into t values(1);
sqlite> select * from t;
1

Идея состоит в том, что какое-то ограничение будет нарушено, и строка будет проигнорирована.

1 голос
/ 05 февраля 2010

Спасибо за понимание, но мне все еще не везет.

Вот мой код

stmt.text = "CREATE TABLE IF NOT EXISTS tbl_breed ("+" breed_id INTEGER PRIMARY KEY AUTOINCREMENT, "+"  breed_breed TEXT)";
stmt.execute();
stmt.text = "INSERT OR IGNORE INTO tbl_breed (breed_breed)"+" VALUES ('Test')";
stmt.execute();

Хорошо, так что я исправил проблему - я думаю, вам нужно жестко прописать первичный ключ, вот что я сделал

stmt.text = "CREATE TABLE IF NOT EXISTS tbl_breed ("+" breed_id INTEGER PRIMARY KEY AUTOINCREMENT, "+"  breed_breed TEXT)";
stmt.execute();
stmt.text = "INSERT OR IGNORE INTO tbl_breed (breed_id,breed_breed)"+" VALUES ('1','test')";
stmt.execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...