Не могу вставить в sqlite с помощью c #, "идентификаторы не уникальны", но в приложении sqlite это работает - PullRequest
0 голосов
/ 20 февраля 2011

Мой SQL-запрос

string stringSQL = "Insert into table(clientid, contractorid, driverid)
                    values (1,1,last_insert_rowid() + 1)"
ExecuteNonQuery(stringSQL)

И ошибка, которую я получаю:

Ошибка: прерывание из-за ограничения нарушение (клиент, подрядчик, Driverid не являются уникальными.

Кстати, эти столбцы - мои первичные ключи!

Есть ли проблема с использованием функций SQLite в c # vs 2010? Спасибо, я продвигаюсь

1 Ответ

4 голосов
/ 20 февраля 2011

Из документации last_insert_rowid () :

Функция last_insert_rowid () возвращает ROWID вставки последней строки из соединения с базой данных, которое вызвало функцию.

Обратите внимание на часть "из соединения с базой данных" ... что означает, что если в вашей таблице уже есть данные до того, как вы откроете это соединение, возможно, он снова начнет с 0 или 1 и закончится конфликтом,Другими словами, я не думаю, что вы можете использовать это в качестве общего способа увеличения идентификаторов строк.

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

Это, конечно, при условии, что документы верны -Я никогда не использовал sqlite ...

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